This page contains a map of all the routines, variables and macros in the Commodore 64 version of Elite. The source files are structured like this:
- The two disk loader sources, Disk Loader 1 and Disk Loader 2, which boot the disk and load the game loader and game binaries
- The Game Loader, which loads and decrypts the game data
- The main game source, which consists of Workspaces, Elite A, Elite B, Elite C, Elite D, Elite E, Elite F, Elite G, Elite H, Elite I, Elite J and Elite K
- The Game data source, which contains game images, ship blueprints and text tokens
- The Sprites source, which contains sprite definitions for the laser sights, explosions and Trumbles
You can click on the links above to jump to the relevant part of the map.
Disk Loader 1
-------------
Category | Details |
---|---|
Loader | Variable: basicBootstrap (Disk Loader 1) Call the RelocateLoader routine even if the firebird file is loaded as a BASIC program |
Loader | Subroutine: RelocateLoader (Disk Loader 1) Load and run the GMA1 loader file |
Loader | Subroutine: filename (Disk Loader 1) A wildcarded filename that matches the first GMA file on disk |
Loader | Subroutine: RunGMA (Disk Loader 1) Load and run the GMA1 loader file |
Loader | Variable: basicVectors (Disk Loader 1) Addresses that override the BASIC vectors for when the loader file is loaded at the address in its PRG header, $02A7 |
Disk Loader 2
-------------
Category | Details |
---|---|
Loader | Subroutine: Elite GMA loader (Part 1 of 4) (Disk Loader 2) Skip past the table of track and sector numbers if present |
Loader | Variable: trackSector (Disk Loader 2) Track and sector numbers for all the files on the disk, for use in the fast loader |
Loader | Subroutine: Elite GMA loader (Part 2 of 4) (Disk Loader 2) Offer the option of a fast loader and run the disk protection code in the GMA3 file |
Loader | Subroutine: Elite GMA loader (Part 3 of 4) (Disk Loader 2) Run the Elite loader in the GMA4 file |
Loader | Subroutine: Elite GMA loader (Part 4 of 4) (Disk Loader 2) Load the GMA5 and GMA6 binaries and start the game |
Loader | Subroutine: LoadGMAFile (Disk Loader 2) Load a specific GMA file |
Loader | Subroutine: SetUpGMAFile (Disk Loader 2) Configure the filename parameters to load a specific GMA file |
Loader | Variable: filename (Disk Loader 2) The GMA filename used to load the game files, buried in a message from GMA, the author of the loader |
Loader | Subroutine: SetUpFastLoader (Disk Loader 2) Set up the fast loader so that calls to the Kernal's file functions use the fast loader routines instead |
Loader | Variable: fastTrackSector (Disk Loader 2) A track and sector table for use by the fast loader |
Loader | Subroutine: CopyZeroPage (Disk Loader 2) Copy a page of data in a specified direction between zero page and the page at $CE00, omitting the first two bytes |
Loader | Subroutine: OfferFastLoader (Disk Loader 2) Offer the option of using the fast loader, if we haven't already, and set up the fast loader if it is chosen |
Loader | Subroutine: PrintString (Disk Loader 2) Print the null-terminated string at offset X in loaderScreens |
Loader | Variable: fastLoaderOffered (Disk Loader 2) A flag to record whether we have already asked whether to use the fast loader, so we don't ask twice |
Loader | Variable: loaderScreens (Disk Loader 2) PETSCII codes for clearing the screen and displaying the fast loader prompt and loading screens |
Game Loader
-----------
Category | Details |
---|---|
Workspaces | Important variables used by the loader |
Utility routines | Denotes the start of the first block of loader code, as used in the encryption/decryption process |
Loader | Subroutine: LODATA (Game Loader) The binaries for recursive tokens and the game font |
Loader | Subroutine: SHIPS (Game Loader) The binaries for the ship blueprints |
Utility routines | Denotes the end of the first block of loader code, as used in the encryption/decryption process |
Loader | A temporary variable that's used for storing addresses |
Loader | Subroutine: Elite loader (Part 1 of 7) (Game Loader) Unscramble the loader code and game data |
Loader | Subroutine: DEEORS (Game Loader) Decrypt a multi-page block of memory |
Loader | Subroutine: Elite loader (Part 2 of 7) (Game Loader) Copy the game data to their correct locations |
Loader | Subroutine: Elite loader (Part 3 of 7) (Game Loader) Configure the memory layout and the CIA chips |
Loader | Subroutine: Elite loader (Part 4 of 7) (Game Loader) Configure the VIC-II for screen memory and sprites |
Loader | Subroutine: Elite loader (Part 5 of 7) (Game Loader) Configure the screen bitmap and copy colour data into screen RAM |
Loader | Subroutine: Elite loader (Part 6 of 7) (Game Loader) Copy colour data into colour RAM and configure more screen RAM |
Loader | Subroutine: Elite loader (Part 7 of 7) (Game Loader) Set up the sprite pointers, make a copy of the dashboard bitmap in DSTORE% and copy the sprite definitions to SPRITELOC% |
Loader | Subroutine: mvblock (Game Loader) Copy a number of pages in memory |
Loader | Subroutine: mvsm (Game Loader) Copy 280 bytes in memory |
Drawing the screen | Screen RAM colour data for the dashboard |
Drawing the screen | Colour RAM colour data for the dashboard |
Drawing the screen | Variable: spritp (Game Loader) Sprite definitions |
Loader | A date image that is included into the source disk binaries (this is just random noise in the released game) |
Drawing the screen | The dashboard bitmap and colour data for screen RAM |
Utility routines | Denotes the end of the second block of loader code, as used in the encryption/decryption process |
Workspaces
----------
Category | Details |
---|---|
Workspaces | Lots of important variables are stored in the zero page workspace as it is quicker and more space-efficient to access memory here |
Workspaces | Temporary storage space for complex calculations |
Workspaces | Ship data blocks and ship line heaps |
Workspaces | Configuration variables |
Workspaces | Variables |
Elite A
-------
Category | Details |
---|---|
Workspaces | Variables that are predominantly used to store the game options |
Keyboard | The keys used to toggle configuration settings when the game is paused |
Loader | Checksum, decrypt and unscramble the main game code, and start the game |
Utility routines | Unscramble the main code |
Utility routines | Decrypt a multi-page block of memory |
Utility routines | Denotes the start of the main game code, from ELITE A to ELITE K |
Flight | Dock at the space station, show the ship hangar and work out any mission progression |
Save and load | Set the standard BRKV handler for the game |
Missions | The low byte of the four 16-bit directions in which Trumble sprites can move |
Missions | The high byte of the four 16-bit directions in which Trumble sprites can move |
Missions | Masks for updating sprite bits in VIC+$10 for the top bit of the 9-bit x-coordinates of the Trumble sprites |
Missions | Move the Trumble sprites around on-screen |
Main loop | Subroutine: Main flight loop (Part 1 of 16) Seed the random number generator |
Main loop | Subroutine: Main flight loop (Part 2 of 16) Calculate the alpha and beta angles from the current pitch and roll of our ship |
Main loop | Subroutine: Main flight loop (Part 3 of 16) Scan for flight keys and process the results |
Main loop | Subroutine: Main flight loop (Part 4 of 16) For each nearby ship: Copy the ship's data block from K% to the zero-page workspace at INWK |
Main loop | Subroutine: Main flight loop (Part 5 of 16) For each nearby ship: If an energy bomb has been set off, potentially kill this ship |
Main loop | Subroutine: Main flight loop (Part 6 of 16) For each nearby ship: Move the ship in space and copy the updated INWK data block back to K% |
Main loop | Subroutine: Main flight loop (Part 7 of 16) For each nearby ship: Check whether we are docking, scooping or colliding with it |
Main loop | Subroutine: Main flight loop (Part 8 of 16) For each nearby ship: Process us potentially scooping this item |
Main loop | Subroutine: Main flight loop (Part 9 of 16) For each nearby ship: If it is a space station, check whether we are successfully docking with it |
Main loop | Subroutine: Main flight loop (Part 10 of 16) For each nearby ship: Remove if scooped, or process collisions |
Main loop | Subroutine: Main flight loop (Part 11 of 16) For each nearby ship: Process missile lock and firing our laser |
Main loop | Subroutine: Main flight loop (Part 12 of 16) For each nearby ship: Draw the ship, remove if killed, loop back |
Main loop | Subroutine: Main flight loop (Part 13 of 16) Show energy bomb effect, charge shields and energy banks |
Main loop | Subroutine: Main flight loop (Part 14 of 16) Spawn a space station if we are close enough to the planet |
Main loop | Subroutine: Main flight loop (Part 15 of 16) Perform altitude checks with the planet and sun and process fuel scooping if appropriate |
Main loop | Subroutine: Main flight loop (Part 16 of 16) Process laser pulsing, E.C.M. energy drain, call stardust routine |
Universe | Randomly spawn cargo from a destroyed ship |
Drawing the screen | Switch off the energy bomb effect |
Text | Print the captain's name during mission briefings |
Text | Print the location hint during the mission 1 briefing |
Text | Print an extended recursive token from the RUTOK token table |
Text | Print an extended recursive token from the TKN1 token table |
Text | Print an extended text token (1-255) |
Text | Switch to ALL CAPS when printing extended tokens |
Text | Switch to Sentence Case when printing extended tokens |
Text | Tab to column 6 and start a new word when printing extended tokens |
Text | Clear the screen and set the current view type to 1 |
Text | Switch to lower case when printing extended tokens |
Text | Switch to standard tokens in Sentence Case |
Text | Switch to extended tokens |
Text | Switch to justified text when printing extended tokens |
Text | Switch to left-aligned text when printing extended tokens |
Text | Print the selected system's adjective, e.g. Lavian for Lave |
Text | Print a random 1-8 letter word in Sentence Case |
Text | Capitalise the next letter |
Text | Test whether a character is a vowel |
Text | Switch to white text |
Text | The extended token table for jump tokens 1-32 (DETOK) |
Text | The extended two-letter token lookup table |
Text | The two-letter token lookup table |
Save and load | The data block for the last saved commander |
Save and load | Second checksum byte for the saved commander data file |
Save and load | Third checksum byte for the saved commander data file |
Save and load | First checksum byte for the saved commander data file |
Save and load | The drive and directory number used when saving or loading a commander file |
Save and load | The data block for the default commander |
Drawing ships | Ship colours on the scanner |
Drawing lines | The ball line heap for storing x-coordinates |
Drawing lines | The ball line heap for storing y-coordinates |
Elite B
-------
Category | Details |
---|---|
Universe | Table of pointers to the local universe's ship data blocks |
Drawing pixels | Ready-made double-pixel character row bytes for mode 4 |
Drawing pixels | Ready-made double-pixel character row bytes for the dashboard |
Keyboard | Flush the keyboard buffer |
Drawing lines | Print a title and draw a horizontal line at row 19 to box it in |
Drawing lines | Draw a horizontal line at pixel row 19 to box in a title |
Drawing lines | Draw a horizontal line at pixel row 23 to box in a title |
Drawing lines | Draw a screen-wide horizontal line at the pixel row in A |
Drawing lines | Remove a line from the sun line heap and draw it on-screen |
Drawing lines | Ready-made character rows for the left end of a horizontal line in the space view |
Drawing lines | Ready-made character rows for the right end of a horizontal line in mode 4 |
Maths (Arithmetic) | Calculate (YY+1 SYL+Y) = (A P) + (S R) and draw stardust particle |
Drawing pixels | Draw a stardust particle relative to the screen centre |
Drawing pixels | Draw a 1-pixel dot, 2-pixel dash or 4-pixel square |
Drawing circles | Draw a circle segment and add it to the ball line heap |
Stardust | Reflect the stardust particles in the screen diagonal and redraw the stardust field |
Stardust | The main routine for processing the stardust |
Stardust | Process the stardust for the front view |
Stardust | Process the stardust for the rear view |
Maths (Geometry) | Add an orientation vector coordinate to an INWK coordinate |
Maths (Geometry) | Calculate a cap on the maximum distance to the planet or sun |
Maths (Arithmetic) | Calculate A = x_hi^2 + y_hi^2 + z_hi^2 in the K% block |
Status | Show the Status Mode screen |
Text | Print text followed by a newline and indent of 6 characters |
Moving | Calculate K(3 2 1) = (x_sign x_hi x_lo) + K(3 2 1) |
Moving | Apply a 3.6 degree pitch or roll to an orientation vector |
Text | A constant used when printing large numbers in BPRNT |
Text | Print an 8-bit number, left-padded to 3 digits, and optional point |
Text | Print a 16-bit number, left-padded to n digits, and optional point |
Text | Print a 32-bit number, left-padded to a specific number of digits, with an optional decimal point |
Text | A mask for applying the lower case part of Sentence Case to extended text tokens |
Text | A flag that indicates whether we are currently printing a word |
Text | A flag for switching between standard and extended text tokens |
Text | Flags that govern how justified extended text tokens are printed |
Text | The size of the justified text buffer at BUF |
Text | A flag to denote whether printing in lower case is enabled for extended text tokens |
Text | A mask for capitalising the next letter in an extended text token |
Text | Print a newline |
Text | Print the character in variable DTW7 |
Text | Print a character at the text cursor, with support for verified text in extended tokens |
Sound | Make a standard system beep |
Dashboard | Subroutine: DIALS (Part 1 of 4) Update the dashboard: speed indicator |
Dashboard | Subroutine: DIALS (Part 2 of 4) Update the dashboard: pitch and roll indicators |
Dashboard | Subroutine: DIALS (Part 3 of 4) Update the dashboard: four energy banks |
Dashboard | Subroutine: DIALS (Part 4 of 4) Update the dashboard: shields, fuel, laser & cabin temp, altitude |
Dashboard | Fetch the current dashboard colours, to support flashing |
Dashboard | Update a bar-based indicator on the dashboard |
Dashboard | Update the roll or pitch indicator on the dashboard |
Flight | Launch our escape pod |
Charts | Search the galaxy for a system |
Elite C
-------
Category | Details |
---|---|
Tactics | Subroutine: TACTICS (Part 1 of 7) Apply tactics: Process missiles, both enemy missiles and our own |
Tactics | Subroutine: TACTICS (Part 2 of 7) Apply tactics: Escape pod, station, lone Thargon, safe-zone pirate |
Tactics | Subroutine: TACTICS (Part 3 of 7) Apply tactics: Calculate dot product to determine ship's aim |
Tactics | Subroutine: TACTICS (Part 4 of 7) Apply tactics: Check energy levels, maybe launch escape pod if low |
Tactics | Subroutine: TACTICS (Part 5 of 7) Apply tactics: Consider whether to launch a missile at us |
Tactics | Subroutine: TACTICS (Part 6 of 7) Apply tactics: Consider firing a laser at us, if aim is true |
Tactics | Subroutine: TACTICS (Part 7 of 7) Apply tactics: Set pitch, roll, and acceleration |
Flight | Apply docking manoeuvres to the ship in INWK |
Maths (Arithmetic) | Calculate vector K3(8 0) = [x y z] - coordinates of the sun or space station |
Maths (Arithmetic) | Calculate vector K3(8 0) = [x y z] - coordinates in (A V) |
Maths (Arithmetic) | Calculate K3 = (x_sign x_hi x_lo) - V(1 0) |
Maths (Geometry) | Calculate the dot product of XX15 and one of the space station's orientation vectors |
Maths (Geometry) | Negate the vector in XX15 so it points in the opposite direction |
Flight | Calculate the vector from the ideal docking position to the ship |
Tactics | Work out if the ship in INWK is in our crosshairs |
Tactics | Launch a ship straight ahead of us, below the laser sights |
Tactics | Fire a missile from our ship |
Tactics | Make a ship hostile |
Tactics | Display the "missile jammed" message |
Flight | Spawn an escape pod from the current (parent) ship |
Universe | Spawn a child ship from the current (parent) ship |
Moving | Move a ship in space along one of the coordinate axes |
Drawing circles | Make the hyperspace sound and draw the hyperspace tunnel |
Drawing circles | Make the launch sound and draw the launch tunnel |
Drawing circles | Draw the launch or hyperspace tunnel |
Stardust | Process the stardust for the left or right view |
Maths (Arithmetic) | Set K(3 2 1 0) = (A A A A) and clear the C flag |
Maths (Arithmetic) | Calculate K(3 2 1 0) = (A P+1 P) * Q |
Maths (Arithmetic) | Calculate (S R) = XX(1 0) and (A P) = A * ALP1 |
Maths (Arithmetic) | Calculate (A P) = ALP1 * A |
Maths (Arithmetic) | Set P(1 0) = (A A) |
Maths (Arithmetic) | Clear bit 7 of A and calculate (A P) = A * A |
Maths (Arithmetic) | Calculate (A P) = A * A |
Maths (Arithmetic) | Copy X into P and A, and clear the C flag |
Maths (Arithmetic) | Calculate Y1 = y_hi and (A P) = |y_hi| * Q for Y-th stardust |
Maths (Arithmetic) | Calculate (A P) = |A| * Q |
Maths (Arithmetic) | Calculate (A P) = P * Q |
Maths (Arithmetic) | Calculate (A P) = P * X |
Maths (Arithmetic) | Calculate A = K * sin(A) |
Maths (Arithmetic) | Calculate A = A * Q / 256 |
Maths (Arithmetic) | Calculate (A P+1 P) = (A ~P) * Q |
Maths (Arithmetic) | An unused routine that does the same as MUT2 |
Maths (Arithmetic) | Calculate (S R) = XX(1 0) and (A P) = Q * A |
Maths (Arithmetic) | Calculate R = XX and (A P) = Q * A |
Maths (Arithmetic) | Calculate (A P) = Q * A |
Maths (Arithmetic) | Calculate (S R) = Q * A |
Maths (Geometry) | Calculate the dot product of XX15 and an orientation vector |
Maths (Arithmetic) | Calculate (A X) = Q * A + (S R) |
Maths (Arithmetic) | Calculate (A X) = (A P) + (S R) |
Maths (Arithmetic) | Calculate (A ?) = (-X * A + (S R)) / 96 |
Maths (Arithmetic) | Calculate (P R) = 256 * DELTA / z_hi |
Maths (Arithmetic) | Calculate (P R) = 256 * DELTA / A |
Maths (Arithmetic) | Calculate (P R) = 256 * A / Q |
Maths (Arithmetic) | Calculate K(3 2 1 0) = (A P+1 P) / (z_sign z_hi z_lo) |
Dashboard | Apply damping to the pitch or roll dashboard indicator |
Dashboard | Bump up the value of the pitch or roll dashboard indicator |
Dashboard | Reduce the value of the pitch or roll dashboard indicator |
Maths (Geometry) | Calculate A = arctan(P / Q) |
Drawing lines | Draw the laser lines for when we fire our lasers |
Universe | Print the system's extended description or a mission 1 directive |
Missions | Start mission 2 |
Missions | Print an extended token and show the Status Mode screen |
Missions | Receive the briefing and plans for mission 2 |
Missions | Finish mission 2 |
Missions | Finish mission 1 |
Missions | Start mission 3 |
Missions | Start mission 1 and show the mission briefing |
Missions | Clear the screen, display "INCOMING MESSAGE" and wait for 2 seconds |
Missions | Display a rotating ship, waiting until a key is pressed, then remove the ship from the screen |
Text | Move to row 10, switch to white text, and switch to lower case when printing extended tokens |
Text | Move to row 6 and switch to lower case when printing extended tokens |
Missions | Display a rotating ship at space coordinates (0, conhieght, 256) and scan the keyboard |
Keyboard | Wait until a key is pressed, ignoring any existing key press |
Universe | Fetch the address of a ship's data block into INF |
Universe | Set the selected system to the current system |
Utility routines | Wait for a specified time, in either 1/50s of a second (on PAL systems) or 1/60s of a second (on NTSC systems) |
Drawing lines | Colours for the crosshair sights on the different laser types |
Text | Lookup table for random tokens in the extended token table (0-37) |
Utility routines | Denotes the end of the first part of the main game code (CODE1), from ELITE A to ELITE C |
Elite D
-------
Category | Details |
---|---|
Market | Work out if we have space for one tonne of cargo |
Market | Work out if we have space for a specific amount of cargo |
Text | Move the text cursor to a specific column |
Text | Move the text cursor to a specific row |
Text | Move the text cursor to the next row |
Drawing the screen | Implement the #SETVDU19 |
Drawing the screen | Clear the screen and set up a trading screen |
Universe | Twist the selected system's seeds four times |
Universe | Twist the selected system's seeds |
Universe | Print the distance to the selected system in light years |
Text | Print a text token and a paragraph break |
Text | Print a paragraph break |
Text | Set Sentence Case and print a newline |
Text | Print a newline |
Universe | Display "MAINLY " and jump to TT72 |
Text | Print a text token followed by a space |
Universe | Show the Data on System screen |
Universe | Calculate system data from the system seeds |
Charts | Show the Long-range Chart |
Drawing lines | Draw a set of crosshairs |
Drawing circles | Draw a circle with crosshairs on a chart |
Drawing circles | Draw a circle on a chart |
Market | Show the Buy Cargo screen |
Market | Get a number from the keyboard |
Market | Print an "ITEM?" error, make a beep and rejoin the TT210 routine |
Market | Show the Sell Cargo screen |
Market | Show a list of current cargo in our hold, optionally to sell |
Market | Show the Inventory screen |
Keyboard | Ask a question with a "Y/N?" prompt and return the response |
Charts | Move the crosshairs on a chart |
Charts | Draw a small set of crosshairs on a chart |
Charts | Move galactic coordinates by a signed delta |
Charts | Draw crosshairs on the Short-range Chart, with clipping |
Charts | Show the Short-range Chart |
Universe | Set the selected system's seeds to those of system 0 |
Universe | Set the current system to the nearest system to a point |
Flight | Print a message to say there is no hyperspacing allowed inside the station |
Flight | Start the hyperspace process |
Flight | Start a hyperspace countdown |
Flight | Set the current system to the nearest system and return to hyp |
Flight | Perform a galactic hyperspace jump |
Universe | Set the current system to the selected system |
Flight | Print the hyperspace countdown in the top-left of the screen |
Text | Print 16-bit number, left-padded to 5 digits, no point |
Text | Print a 16-bit number, left-padded to 5 digits, and optional point |
Flight | Print an error when a system is out of hyperspace range |
Text | Print a text token followed by a question mark |
Market | Print the name, price and availability of a market item |
Market | Print the unit ("t", "kg" or "g") for a market item |
Text | Print a space |
Market | Print "t" (for tonne) and a space |
Market | Print "kg" (for kilograms) |
Market | Print "g" (for grams) |
Market | Print the headers for the table of market prices |
Market | Show the Market Price screen |
Market | Calculate QQ19+3 = economy * |economic_factor| |
Universe | Process a jump to the system closest to (QQ9, QQ10) |
Universe | Calculate the availability of market items |
Universe | Spawn a Thargoid ship and a Thargon companion |
Flight | Process a mis-jump into witchspace |
Flight | Try to initiate a jump into hyperspace |
Flight | Launch from a station or show the front space view |
Charts | Display either the Long-range or Short-range Chart |
Maths (Arithmetic) | Subtract an amount of cash from the cash pot |
Maths (Arithmetic) | Add an amount of cash to the cash pot |
Maths (Arithmetic) | Calculate (Y X) = P * Q * 4 |
Maths (Arithmetic) | Calculate (Y X) = (A P) * 4 |
Loader | The OS command string for running the flight code in file D.CODE in the disc version of Elite |
Equipment | Show the Equip Ship screen |
Market | Print the amount of money we have left in the cash pot, then make a short, high beep and delay for 1 second |
Text | Make a short, high beep and delay for 1 second |
Equipment | Subtract the price of equipment from the cash pot |
Equipment | Return the price of a piece of equipment |
Equipment | Print a menu of the four space views, for buying lasers |
Charts | Select the closest system and redraw the chart crosshairs |
Equipment | Install a new laser, processing a refund if applicable |
Equipment | Equipment prices |
Elite E
-------
Category | Details |
---|---|
Universe | Print the selected system name |
Status | Print the commander's name |
Universe | Print the current system name |
Universe | Print the current galaxy number |
Status | Print fuel and cash levels |
Status | Print the current amount of cash |
Text | Print a text token followed by a newline |
Text | Print a text token followed by a colon |
Text | Print a colon |
Text | Print a text token |
Text | Print a letter in lower case |
Text | Print a letter according to Sentence Case |
Text | Print a recursive token in the range 128-145 |
Text | Tab to column 21 and print a colon |
Text | Print a letter in lower case |
Text | Print a character and switch to capitals |
Text | Print a character |
Text | Print a two-letter token or recursive token 0-95 |
Text | Print a recursive token |
Utility routines | A routine that swaps zero page with the page at $CE00, so that zero page changes made by Kernal functions can be reversed |
Drawing ships | Draw an exploding ship |
Drawing ships | A table to shift X left by one place when X is 0 or 1 |
Drawing ships | Draw the explosion along with an explosion sprite |
Universe | Update the missile indicators, set up the planet data block |
Universe | Set up various aspects of arriving in a new system |
Stardust | Initialise the stardust field |
Stardust | Create a random cloud of stardust |
Dashboard | Clear the scanner, reset the ball line and sun line heaps |
Drawing suns | Reset the sun line heap |
Drawing the screen | Show or hide the dashboard (for when we die) |
Flight | Charge a shield and drain some energy from the energy banks |
Flight | Drain some energy from the energy banks |
Dashboard | Update the compass |
Maths (Arithmetic) | Calculate (Y X) = A / 10 |
Maths (Geometry) | Calculate the vector to the space station |
Dashboard | Draw the space station on the compass |
Dashboard | Draw a dot on the compass, given the planet/station vector |
Flight | Take some damage |
Maths (Geometry) | Copy a space coordinate from the K% block into K3 |
Universe | Add a new space station to our local bubble of universe |
Universe | Add a new ship to our local bubble of universe |
Universe | Flip the sign and double an INWK byte |
Dashboard | Disarm missiles and update the dashboard indicators |
Dashboard | Set/unset the lock target for a missile and update the dashboard |
Maths (Geometry) | Project the current ship or planet onto the screen |
Drawing planets | Remove the planet or sun from the screen |
Drawing planets | Draw the planet or sun |
Drawing planets | Draw the planet, with either an equator and meridian, or a crater |
Drawing planets | Draw the planet's equator and meridian |
Drawing planets | Draw the planet's crater |
Drawing planets | Calculate (Y A) = nosev_x / z |
Drawing planets | Draw a half-ellipse |
Drawing planets | Draw an ellipse or half-ellipse |
Drawing suns | Draw the sun: Set up all the variables needed to draw the sun |
Drawing suns | Draw the sun: Start from the bottom of the screen and erase the old sun line by line |
Drawing suns | Draw the sun: Continue to move up the screen, drawing the new sun line by line |
Drawing suns | Draw the sun: Continue to the top of the screen, erasing the old sun line by line |
Drawing circles | Draw a circle for the planet |
Drawing circles | Draw a circle (for the planet or chart) |
Drawing planets | Remove the planet from the screen |
Drawing planets | Reset the ball line heap |
Drawing suns | Remove the sun from the screen |
Drawing lines | Draw a horizontal line given a centre and a half-width |
Drawing circles | Check whether any part of a circle appears on the extended screen |
Drawing planets | Return from a planet/sun-drawing routine with a failure flag |
Drawing planets | Calculate (Y A P) = 222 * roofv_x / z |
Drawing planets | Calculate CNT2 = arctan(P / A) / 4 |
Drawing planets | Calculate roofv_x / z and roofv_y / z |
Drawing planets | Calculate (X K) = (A P+1 P) / (z_sign z_hi z_lo) |
Keyboard | Wait until either "Y" or "N" is pressed |
Keyboard | Scan the keyboard for cursor key or joystick movement |
Elite F
-------
Category | Details |
---|---|
Utility routines | Subroutine: SWAPPZERO (source disk variant) A routine that swaps zero page with the page at $CE00, so that zero page changes made by Kernal functions can be reversed |
Missions | Disable all sprites and remove them from the screen |
Utility routines | Set the 6510 input/output port register to control the memory map |
Utility routines | Temporary storage for the new value of the 6510 input/output port register |
Universe | Set the SLSP ship line heap pointer after shuffling ship slots |
Universe | Remove the current ship from our local bubble of universe |
Universe | Remove the space station and replace it with the sun |
Universe | Check the local bubble for missiles with target lock |
Universe | Remove a ship from our local bubble of universe |
Missions | Check whether we are in the Constrictor's system in mission 1 |
Start and end | Reset most variables |
Start and end | Reset a number of flight variables and workspaces |
Universe | Reset the INWK workspace and orientation vectors |
Dashboard | Display the dashboard's missile indicators in green |
Flight | Remove an in-flight message from the space view |
Universe | Initialise the INWK workspace to a hostile ship |
Maths (Arithmetic) | Generate random numbers |
Main loop | Subroutine: Main game loop (Part 1 of 6) Spawn a trader (a Cobra Mk III, Python, Boa or Anaconda) |
Main loop | Subroutine: Main game loop (Part 2 of 6) Call the main flight loop, and potentially spawn a trader, an asteroid, or a cargo canister |
Main loop | Subroutine: Main game loop (Part 3 of 6) Potentially spawn a cop, particularly if we've been bad |
Main loop | Subroutine: Main game loop (Part 4 of 6) Potentially spawn a lone bounty hunter, a Thargoid, or up to four pirates |
Main loop | Subroutine: Main game loop (Part 5 of 6) Cool down lasers, make calls to update the dashboard |
Main loop | Subroutine: Main game loop (Part 6 of 6) Process non-flight key presses (docked keys) |
Keyboard | Process function key, save key, hyperspace and chart key presses and update the hyperspace counter |
Status | Calculate how bad we have been |
Maths (Geometry) | Compare x_hi, y_hi and z_hi with 224 |
Maths (Geometry) | Compare x_hi, y_hi and z_hi with A |
Maths (Geometry) | Calculate a cap on the maximum distance to a ship |
Utility routines | The brkd counter for error handling |
Utility routines | The standard BRKV handler for the game |
Start and end | Display the death screen |
Universe | Contains the address of the Coriolis space station's ship blueprint |
Loader | Initialise the configuration variables and start the game |
Start and end | Main entry point for the Elite game code |
Start and end | Reset most of the game and restart from the title screen |
Start and end | Show the "Load New Commander (Y/N)?" screen and start the game |
Start and end | Show the "Press Fire or Space, Commander" screen and start the game |
Status | Go to the docking bay (i.e. show the Status Mode screen) |
Start and end | Reset the current commander data block to the last saved commander |
Start and end | Display a title screen with a rotating ship and prompt |
Save and load | Calculate the checksum for the last saved commander data block |
Save and load | Calculate the third checksum for the last saved commander data block (Commodore 64 and Apple II versions only) |
Save and load | Restore the default JAMESON commander |
Save and load | Copy the last saved commander's name from INWK to NA% |
Save and load | Copy the last saved commander's name from NA% to INWK |
Save and load | Fetch the name of a commander file to save or load |
Text | Fetch a line of text from the keyboard |
Text | The OSWORD configuration block used to fetch a line of text from the keyboard |
Save and load | Display the currently selected media (disk or tape) |
Save and load | Display the non-selected media (disk or tape) |
Utility routines | Reset the local bubble of universe and ship status |
Utility routines | Zero-fill pages $B and $C |
Utility routines | Zero-fill the page whose number is in X |
Utility routines | Zero-fill a specific page |
Save and load | Display the disk access menu and process saving of commander files |
Save and load | Contains the length of the most recently entered commander name |
Save and load | Contains the length of the last saved commander name |
Save and load | Set up memory and interrupts so we can use the Kernal functions and configure the file system device number and filename |
Save and load | Get an ASCII disk drive number from the keyboard |
Save and load | A lookup table containing the device numbers for tape and disk |
Save and load | Load a commander file |
Utility routines | Disable the keyboard, set the SVN flag to 0, and return with A = 0 |
Save and load | Print either "TAPE ERROR" or "DISK ERROR" |
Utility routines | Delay by iterating through 5 * 256 (1280) empty loops |
Keyboard | Clear the key logger |
Maths (Geometry) | Calculate the vector to the planet and store it in XX15 |
Maths (Geometry) | Normalise the three-coordinate vector in K3 |
Maths (Geometry) | Normalise the three-coordinate vector in XX15 |
Keyboard | The key logger |
Keyboard | Scan the keyboard for key presses |
Flight | Perform an in-system jump |
Keyboard | Lookup table for in-flight keyboard controls |
Keyboard | Scan the keyboard to see if CTRL is currently pressed |
Keyboard | Scan the keyboard to see if a specific key is being pressed |
Keyboard | Scan a specific column in the keyboard matrix for a key press |
Keyboard | Read the joystick position |
Keyboard | Toggle a configuration setting and emit a beep |
Keyboard | Read joystick and flight controls |
Keyboard | Clear the key logger and reset a number of flight variables |
Keyboard | Scan for the seven primary flight controls and apply the docking computer manoeuvring code |
Keyboard | Scan for pause, configuration and secondary flight keys |
Keyboard | Scan the keyboard until a key is pressed |
Flight | Erase an old in-flight message and display a new one |
Flight | Display an in-flight message |
Flight | Print a text token, possibly followed by " DESTROYED" |
Flight | Potentially lose cargo or equipment following damage |
Flight | Display "E.C.M.SYSTEM DESTROYED" as an in-flight message |
Flight | Display "FUEL SCOOPS DESTROYED" as an in-flight message |
Market | Macro definition for the market prices table |
Market | Market prices table |
Maths (Geometry) | Orthonormalise the orientation vectors for a ship |
Maths (Arithmetic) | Calculate A = A / Q |
Maths (Arithmetic) | Calculate -(nosev_1 * roofv_1 + nosev_2 * roofv_2) / nosev_3 |
Maths (Arithmetic) | Calculate (P+1 A) = (A P) / Q |
Sound | Start playing the title music, if configured |
Sound | Start playing the docking music, if configured |
Sound | Process a change in the docking music configuration setting |
Sound | Stop playing the docking music |
Keyboard | An unused key logger buffer that's left over from the 6502 Second Processor version of Elite |
Keyboard | Translation table from internal key number to ASCII |
Elite G
-------
Category | Details |
---|---|
Maths (Arithmetic) | Binary logarithm table (high byte) |
Maths (Arithmetic) | Binary logarithm table (low byte) |
Maths (Arithmetic) | Binary antilogarithm table |
Maths (Arithmetic) | Binary antilogarithm table |
Drawing pixels | Lookup table for converting a pixel y-coordinate to the low byte of a screen address (within the 256-pixel-wide game screen) |
Drawing pixels | Lookup table for converting a pixel y-coordinate to the high byte of a screen address (within the 256-pixel-wide game screen) |
Drawing pixels | Lookup table for converting a text y-coordinate to the low byte of the address of the start of the character row |
Drawing pixels | Lookup table for converting a text y-coordinate to the high byte of the address of the start of the character row in screen RAM |
Drawing ships | Draw a distant ship as a point rather than a full wireframe |
Maths (Arithmetic) | Calculate Q = SQRT(R Q) |
Maths (Arithmetic) | Calculate R = 256 * A / Q |
Maths (Arithmetic) | Calculate (S A) = (S R) + (A Q) |
Maths (Geometry) | Calculate the dot product of XX15 and XX16 |
Drawing ships | Subroutine: LL9 (Part 1 of 12) Draw ship: Check if ship is exploding, check if ship is in front |
Drawing ships | Subroutine: LL9 (Part 2 of 12) Draw ship: Check if ship is in field of view, close enough to draw |
Drawing ships | Subroutine: LL9 (Part 3 of 12) Draw ship: Set up orientation vector, ship coordinate variables |
Drawing ships | Subroutine: LL9 (Part 4 of 12) Draw ship: Set visibility for exploding ship (all faces visible) |
Drawing ships | Subroutine: LL9 (Part 5 of 12) Draw ship: Calculate the visibility of each of the ship's faces |
Drawing ships | Subroutine: LL9 (Part 6 of 12) Draw ship: Calculate the visibility of each of the ship's vertices |
Maths (Arithmetic) | Calculate (U R) = 256 * A / Q |
Maths (Arithmetic) | Calculate 128 - (U R) |
Drawing ships | Subroutine: LL9 (Part 7 of 12) Draw ship: Calculate the visibility of each of the ship's vertices |
Drawing ships | Subroutine: LL9 (Part 8 of 12) Draw ship: Calculate the screen coordinates of visible vertices |
Drawing ships | Subroutine: LL9 (Part 9 of 12) Draw ship: Draw laser beams if the ship is firing its laser at us |
Drawing ships | Subroutine: LL9 (Part 10 of 12) Draw ship: Calculate the visibility of each of the ship's edges |
Drawing lines | Subroutine: LL145 (Part 1 of 4) Clip line: Work out which end-points are on-screen, if any |
Drawing lines | Subroutine: LL145 (Part 2 of 4) Clip line: Work out if any part of the line is on-screen |
Drawing lines | Subroutine: LL145 (Part 3 of 4) Clip line: Calculate the line's gradient |
Drawing lines | Subroutine: LL145 (Part 4 of 4) Clip line: Call the routine in LL188 to do the actual clipping |
Drawing ships | Subroutine: LL9 (Part 11 of 12) Draw ship: Add all visible edges to the ship line heap |
Drawing ships | Subroutine: LL9 (Part 12 of 12) Draw ship: Draw all the visible edges from the ship line heap |
Drawing lines | Move a point along a line until it is on-screen |
Maths (Arithmetic) | Calculate (Y X) = (S x1_lo) * XX12+2 or (S x1_lo) / XX12+2 |
Maths (Arithmetic) | Calculate (Y X) = (S R) / XX12+2 or (S R) * XX12+2 |
Maths (Arithmetic) | Calculate Q = XX12+2, A = S EOR XX12+3 and (S R) = |S R| |
Elite H
-------
Category | Details |
---|---|
Moving | Subroutine: MVEIT (Part 1 of 9) Move current ship: Tidy the orientation vectors |
Moving | Subroutine: MVEIT (Part 2 of 9) Move current ship: Call tactics routine, remove ship from scanner |
Moving | Subroutine: MVEIT (Part 3 of 9) Move current ship: Move ship forward according to its speed |
Moving | Subroutine: MVEIT (Part 4 of 9) Move current ship: Apply acceleration to ship's speed as a one-off |
Moving | Subroutine: MVEIT (Part 5 of 9) Move current ship: Rotate ship's location by our pitch and roll |
Moving | Subroutine: MVEIT (Part 6 of 9) Move current ship: Move the ship in space according to our speed |
Moving | Subroutine: MVEIT (Part 7 of 9) Move current ship: Rotate ship's orientation vectors by pitch/roll |
Moving | Subroutine: MVEIT (Part 8 of 9) Move current ship: Rotate ship about itself by its own pitch/roll |
Moving | Subroutine: MVEIT (Part 9 of 9) Move current ship: Redraw on scanner, if it hasn't been destroyed |
Moving | Calculate (x_sign x_hi x_lo) = (x_sign x_hi x_lo) + (A R) |
Moving | Apply pitch and roll to an orientation vector |
Moving | Calculate (A P+2 P+1) = (x_sign x_hi x_lo) + (A P+2 P+1) |
Moving | Rotate the planet or sun's location in space by the amount of pitch and roll of our ship |
Copy protection | Checksum the code from $1000 to $9FFF and check against S%-1 |
Flight | Flip the coordinate axes for the four different views |
Flight | Initialise the space view |
Flight | Draw the laser crosshairs |
Missions | A table for converting the number of Trumbles in the hold into a number of sprites in the range 0 to 6 |
Missions | A table for converting the number of Trumbles in the hold into a sprite-enable flag to use with VIC register $15 |
Drawing the screen | Clear the screen and set the current view type |
Drawing the screen | Clear the top part of the screen and draw a border box |
Elite I
-------
Category | Details |
---|---|
Tactics | Contains an RTS |
Sound | Switch off the E.C.M. |
Tactics | Add an enemy missile to our local bubble of universe |
Status | Process us making a kill |
Sound | Make the sound of a laser strike or ship explosion |
Sound | Make a short, high beep |
Sound | Make an explosion sound |
Sound | Reset the sound buffers and turn off all sound channels |
Sound | Turn off a specific sound effect in whichever voice it is currently playing in |
Sound | Make the sound of the hyperspace drive being engaged |
Sound | Make a sound effect with a specific volume and release length |
Sound | Make the sound whose number is in Y |
Drawing the screen | The current raster count, which flips between 0 and 1 on each call to the COMIRQ1 interrupt handler (0 = space view, 1 = dashboard) |
Drawing the screen | The value for VIC register $18 to set the screen RAM address for a raster count of 0 in the interrupt routine (i.e. the space view) |
Drawing the screen | The value for VIC register $18 to set the screen RAM address for a raster count of 1 in the interrupt routine (i.e. the dashboard) |
Drawing the screen | A table for converting the value of X from 0 to 1 or from 1 to 0, for use when flipping RASCT between 0 and 1 on each interrupt |
Drawing the screen | The raster lines that fire the raster interrupt, so it fires at the top of the screen (51) and the top of the dashboard (51 + 143) |
Drawing the screen | Controls the energy bomb effect by switching between multicolour and standard mode |
Drawing the screen | Controls whether multicolour or standard bitmap mode is used for the lower part of the screen (i.e. the dashboard) |
Drawing the screen | Controls whether sprite 1 (the explosion sprite) is drawn in single colour or multicolour mode |
Drawing the screen | The colour of the explosion sprite in the upper and lower parts of the screen |
Drawing the screen | The background colour for the upper and lower parts of the screen, used by the energy bomb to flash the screen's background colour |
Sound | Check whether this is the last voice when making sound effects in the interrupt routine, and return from the interrupt if it is |
Drawing the screen | The split screen and sound interrupt handler (the IRQ interrupt service hardware vector at $FFFE points here) |
Sound | Process the contents of the sound buffer and send it to the sound chip, to make sound effects as part of the interrupt routine |
Sound | Return from the interrupt routine, for when we are making sound effects |
Sound | The sound buffer where the data to be sent to the sound chip is processed |
Sound | A table for converting the value of Y to 7 * Y |
Sound | The priority level for each sound effect |
Sound | The counter for each sound effect, which defines the duration of the effect in frames |
Sound | The frequency (SID+$5) for each sound effect |
Sound | The voice control register (SID+$4) for each sound effect |
Sound | The attack and decay length (SID+$5) for each sound effect |
Sound | The release length and sustain volume (SID+$6) for each sound effect |
Sound | The frequency change to be applied to each sound effect in each frame (as a signed number) |
Sound | The volume change rate for each sound effect, i.e. how many frames need to pass before the sound effect's volume is reduced by one |
Loader | Configure memory, set up interrupt handlers and configure the VIC-II, SID and CIA chips |
Loader | Acknowledge NMI interrupts and ignore them |
Elite J
-------
Category | Details |
---|---|
Loader | Set the various vectors, interrupts and timers |
Tube | Reset the OSWRCH vector in WRCHV to point to USOSWRCH |
Drawing circles | Implement the #DOHFX |
Text | Implement the #SETCOL |
Save and load | Implement the #DOSVN |
Drawing pixels | Ready-made single-pixel character row bytes for mode 4 |
Drawing pixels | An unused table of ready-made double-pixel character row bytes for the dashboard |
Drawing pixels | Ready-made single-pixel character row bytes for multicolour bitmap mode |
Drawing lines | Addresses for modifying the low byte of the JMP instruction at LI71 to support the unrolled algorithm in part 3 of LOIN |
Drawing lines | Addresses for modifying the high byte of the JMP instruction at LI71 to support the unrolled algorithm in part 3 of LOIN |
Drawing lines | Addresses for modifying the low byte of the JMP instruction at LI72 to support the unrolled algorithm in part 3 of LOIN |
Drawing lines | Addresses for modifying the high byte of the JMP instruction at LI72 to support the unrolled algorithm in part 3 of LOIN |
Drawing lines | Addresses for modifying the low byte of the JMP instruction at LI91 to support the unrolled algorithm in part 4 of LOIN |
Drawing lines | Addresses for modifying the high byte of the JMP instruction at LI91 to support the unrolled algorithm in part 4 of LOIN |
Drawing lines | Addresses for modifying the low byte of the JMP instruction at LI92 to support the unrolled algorithm in part 4 of LOIN |
Drawing lines | Addresses for modifying the high byte of the JMP instruction at LI92 to support the unrolled algorithm in part 4 of LOIN |
Drawing lines | Subroutine: LOIN (Part 1 of 7) Draw a line: Calculate the line gradient in the form of deltas |
Drawing lines | Subroutine: LOIN (Part 2 of 7) Draw a line: Line has a shallow gradient, step right along x-axis |
Drawing lines | Subroutine: LOIN (Part 3 of 7) Draw a shallow line going right and up or left and down |
Drawing lines | Subroutine: LOIN (Part 4 of 7) Draw a shallow line going right and down or left and up |
Drawing lines | Subroutine: LOIN (Part 5 of 7) Draw a line: Line has a steep gradient, step up along y-axis |
Drawing lines | Subroutine: LOIN (Part 6 of 7) Draw a steep line going up and left or down and right |
Drawing lines | Subroutine: LOIN (Part 7 of 7) Draw a steep line going up and right or down and left |
Drawing lines | Draw a horizontal line from (X1, Y1) to (X2, Y1) |
Dashboard | Draw a dash on the compass |
Drawing pixels | Draw a double-height dot on the dashboard |
Drawing pixels | Draw a single-height dash on the dashboard |
Dashboard | Start up the E.C.M. (light up the indicator, start the countdown and make the E.C.M. sound) |
Dashboard | Light up the E.C.M. indicator bulb ("E") on the dashboard |
Dashboard | Light up the space station indicator ("S") on the dashboard |
Dashboard | Draw a specific indicator in the dashboard's missile bar |
Tube | The custom OSRDCH routine for reading characters |
Drawing the screen | Wait for the vertical sync |
Text | Character print vector handler |
Text | Make a beep and jump back into the character-printing routine at CHPR |
Drawing the screen | Clear the screen, move the text cursor to the top-left corner and jump back into the CHPR routine to print the next character |
Text | A jump point that restores the registers and returns from the CHPR subroutine (so we can use a branch instruction to jump to RR4) |
Text | Print a newline |
Text | Print a character at the text cursor by poking into screen memory |
Drawing the screen | Clear the whole screen or just the space view (as appropriate), draw a border box, and if required, show the dashboard |
Drawing the screen | Draw the left and right edges of the border box for the space view |
Drawing the screen | Draw a horizontal line across the screen at pixel y-coordinate X |
Drawing the screen | Draw a vertical line for the left or right border box edge |
Drawing the screen | Show the dashboard on-screen |
Drawing the screen | Hide all ships on the scanner |
Drawing the screen | Clear two four-character borders along each side of the space view |
Drawing the screen | Clear a four-character border along one side of the space view |
Drawing the screen | Clear the whole screen inside the border box, and move the text cursor to the top-left corner |
Utility routines | Zero-fill the page whose number is in X |
Utility routines | Zero-fill a specific page |
Utility routines | Zero-fill memory from SC(1 0) to the end of the page |
Text | An unused routine to move the text cursor to a specific column |
Text | An unused routine to move the text cursor to a specific row |
Utility routines | Copy a specific number of pages in memory |
Drawing the screen | Clear the bottom three text rows of the space view |
Dashboard | Display the current ship on the scanner |
Elite K
-------
Category | Details |
---|---|
Sound | Variables that are used by the music player |
Sound | The interrupt routine for playing background music |
Sound | Process music command <#1 fh1 fl1> to set the frequency for voice 1 to (fh1 fl1) and the control register for voice 1 to value1 |
Sound | Process music command <#2 fh1 fl1> to set the frequency for voice 2 to (fh2 fl2) and the control register for voice 2 to value2 |
Sound | Process music command <#3 fh1 fl1> to set the frequency for voice 3 to (fh3 fl3) and the control register for voice 3 to value3 |
Sound | Process music command <#4 fh1 fl1 fh2 fl2> to set the frequencies and voice control registers for voices 1 and 2 |
Sound | Process music command <#5 fh1 fl1 fh2 fl2 fh3 fl3> to set the frequencies and voice control registers for voices 1, 2 and 3 |
Sound | Process music command <#6> to increment value0 and move on to the next nibble of music data |
Sound | Process music command <#15> to rest for 2 * value4 interrupts |
Sound | Process music command <#8> to rest for value4 interrupts |
Sound | Process music command <#7 ad1 ad2 ad3 sr1 sr2 sr3> to set three voices' attack and decay length, sustain volume and release length |
Sound | Process music command <#9> to restart the current tune |
Sound | Process music command <#10 h1 l1 h2 l2 h3 l3> to set the pulse width to all three voices |
Sound | Process music command <#11>, which does the same as command <#9> and restarts the current tune |
Sound | Process music command <#12 n> to set value4 = n, which sets the rest length for commands #8 and #15 |
Sound | Process music command <#13 v1 v2 v3> to set value1, value2, value3 to the voice control register values for commands <#1> to <#3> |
Sound | Process music command <#14 vf fc cf> to set the volume and filter modes, filter control and filter cut-off frequency |
Sound | Set the voice control register for voice 1 to value1 |
Sound | Set the voice control register for voice 2 to value2 |
Sound | Set the voice control register for voice 3 to value3 |
Sound | Increment the music data pointer in BDdataptr1(1 0) and fetch the next data byte into A |
Sound | Fetch the next two music data bytes and set the frequency of voice 1 (high byte then low byte) |
Sound | Fetch the next two music data bytes and set the frequency of voice 2 (high byte then low byte) and the vibrato variables |
Sound | Fetch the next two music data bytes and set the frequency of voice 3 (high byte then low byte) and the vibrato variables |
Sound | Start playing a new tune as background music |
Sound | Apply a vibrato frequency change to voice 2 |
Sound | Apply a vibrato frequency change to voice 3 |
Sound | Apply vibrato before cleaning up and returning from the interrupt routine |
Sound | Clean up and return from the interrupt routine |
Sound | A jump table containing addresses for processing music commands 1 through 15 (low bytes) |
Sound | A jump table containing addresses for processing music commands 1 through 15 (high bytes) |
Sound | Music data from the C.COMUDAT file |
Utility routines | Denotes the end of the main game code, from ELITE A to ELITE K |
Game data
---------
Category | Details |
---|---|
Text | Macro definition for characters in the recursive token table |
Text | Macro definition for two-letter tokens in the token table |
Text | Macro definition for control codes in the recursive token table |
Text | Macro definition for recursive tokens in the recursive token table |
Text | The recursive token table for tokens 0-148 |
Maths (Geometry) | Sine/cosine table |
Maths (Geometry) | Arctan table |
Text | Macro definition for jump tokens in the extended token table |
Text | Macro definition for characters in the extended token table |
Text | Macro definition for recursive tokens in the extended token table |
Text | Macro definition for two-letter tokens in the extended token table |
Text | Macro definition for random tokens in the extended token table |
Text | Macro definition for standard tokens in the extended token table |
Text | The first extended token table for recursive tokens 0-255 (DETOK) |
Text | System numbers that have extended description overrides |
Text | The criteria for systems with extended description overrides |
Text | The second extended token table for recursive tokens 0-26 (DETOK3) |
Drawing ships | Ship blueprints lookup table |
Drawing ships | Ship blueprints default NEWB flags |
Status | Fractional number of kills awarded for destroying each type of ship |
Status | Integer number of kills awarded for destroying each type of ship |
Drawing ships | Macro definition for adding vertices to ship blueprints |
Drawing ships | Macro definition for adding edges to ship blueprints |
Drawing ships | Macro definition for adding faces to ship blueprints |
Drawing ships | Variable: SHIP_MISSILE (Game data) Ship blueprint for a missile |
Drawing ships | Variable: SHIP_CORIOLIS (Game data) Ship blueprint for a Coriolis space station |
Drawing ships | Variable: SHIP_ESCAPE_POD (Game data) Ship blueprint for an escape pod |
Drawing ships | Variable: SHIP_PLATE (Game data) Ship blueprint for an alloy plate |
Drawing ships | Variable: SHIP_CANISTER (Game data) Ship blueprint for a cargo canister |
Drawing ships | Variable: SHIP_BOULDER (Game data) Ship blueprint for a boulder |
Drawing ships | Variable: SHIP_ASTEROID (Game data) Ship blueprint for an asteroid |
Drawing ships | Variable: SHIP_SPLINTER (Game data) Ship blueprint for a splinter |
Drawing ships | Variable: SHIP_SHUTTLE (Game data) Ship blueprint for a Shuttle |
Drawing ships | Variable: SHIP_TRANSPORTER (Game data) Ship blueprint for a Transporter |
Drawing ships | Variable: SHIP_COBRA_MK_3 (Game data) Ship blueprint for a Cobra Mk III |
Drawing ships | Variable: SHIP_PYTHON (Game data) Ship blueprint for a Python |
Drawing ships | Variable: SHIP_BOA (Game data) Ship blueprint for a Boa |
Drawing ships | Variable: SHIP_ANACONDA (Game data) Ship blueprint for an Anaconda |
Drawing ships | Variable: SHIP_ROCK_HERMIT (Game data) Ship blueprint for a rock hermit (asteroid) |
Drawing ships | Variable: SHIP_VIPER (Game data) Ship blueprint for a Viper |
Drawing ships | Variable: SHIP_SIDEWINDER (Game data) Ship blueprint for a Sidewinder |
Drawing ships | Variable: SHIP_MAMBA (Game data) Ship blueprint for a Mamba |
Drawing ships | Variable: SHIP_KRAIT (Game data) Ship blueprint for a Krait |
Drawing ships | Variable: SHIP_ADDER (Game data) Ship blueprint for an Adder |
Drawing ships | Variable: SHIP_GECKO (Game data) Ship blueprint for a Gecko |
Drawing ships | Variable: SHIP_COBRA_MK_1 (Game data) Ship blueprint for a Cobra Mk I |
Drawing ships | Variable: SHIP_WORM (Game data) Ship blueprint for a Worm |
Drawing ships | Variable: SHIP_COBRA_MK_3_P (Game data) Ship blueprint for a Cobra Mk III (pirate) |
Drawing ships | Variable: SHIP_ASP_MK_2 (Game data) Ship blueprint for an Asp Mk II |
Drawing ships | Variable: SHIP_PYTHON_P (Game data) Ship blueprint for a Python (pirate) |
Drawing ships | Variable: SHIP_FER_DE_LANCE (Game data) Ship blueprint for a Fer-de-Lance |
Drawing ships | Variable: SHIP_MORAY (Game data) Ship blueprint for a Moray |
Drawing ships | Variable: SHIP_THARGOID (Game data) Ship blueprint for a Thargoid mothership |
Drawing ships | Variable: SHIP_THARGON (Game data) Ship blueprint for a Thargon |
Drawing ships | Variable: SHIP_CONSTRICTOR (Game data) Ship blueprint for a Constrictor |
Drawing ships | Variable: SHIP_COUGAR (Game data) Ship blueprint for a Cougar |
Drawing ships | Variable: SHIP_DODO (Game data) Ship blueprint for a Dodecahedron ("Dodo") space station |
Sprites
-------
Category | Details |
---|---|
Sprites | Macro definition for a two-colour sprite pixel row |
Sprites | Macro definition for a two-colour sprite pixel byte |
Sprites | Macro definition for a four-colour sprite pixel row |
Sprites | Macro definition for a four-colour sprite pixel byte |
Sprites | Sprite definitions for four laser sights, the explosion sprite and two Trumbles |