Skip to navigation

Elite on the BBC Micro and NES

Galaxy and system seeds

How system data is extracted from the galaxy and system seeds

Famously, Elite's galaxy and system data is generated procedurally, using a set of three 16-bit seed numbers and the Tribonnaci series to generate entire galaxies of systems like this:

The Long-range Chart in the BBC Micro cassette version of Elite

You can read all about this process in the deep dives on generating system data and twisting the system seeds.

The three seeds are stored in QQ15 (for the selected system) and QQ21 (for system 0 in the current galaxy) as little-endian 16-bit numbers, so the low (least significant) byte is first followed by the high (most significant) byte. That means if the seeds are s0, s1 and s2, they are stored like this:

      low byte  high byte
  s0  QQ15      QQ15+1
  s1  QQ15+2    QQ15+3
  s2  QQ15+4    QQ15+5

In this documentation, we denote the low byte of s0 as s0_lo and the high byte as s0_hi, and so on for s1_lo, s1_hi, s2_lo and s2_hi.

The seeds for the selected system are stored at QQ15, while the seeds for the current galaxy are in QQ21.

Here's a summary of which bits in which seeds are used to generate the various bits of data in the universe. The routine names where these data are generated are shown on the right.

   s0_hi    s0_lo    s1_hi    s1_lo    s2_hi    s2_lo
76543210 76543210 76543210 76543210 76543210 76543210

                                       ^^^----------- Species adjective 1 TT25
                                    ^^^-------------- Species adjective 2 TT25
      ^^----------------^^--------------------------- Species adjective 3 TT25
                                          ^^--------- Species type        TT25
                  ^^^^^^^^--------------^^^^--------- Average radius      TT25
                             ^^^--------------------- Government type     TT24
      ^^--------------------------------------------- Prosperity level    TT24
     ^----------------------------------------------- Economy type        TT24
                        ^^--------------------------- Tech level          TT24
                  ^^^^^^^^--------------------------- Galactic x-coord    TT24
^^^^^^^^--------------------------------------------- Galactic y-coord    TT24
                                              ^-^---- Long-range dot size TT22
                                                    ^ Short-range size    TT23
          ^------------------------------------------ Name length          cpl
                                       ^^^^^--------- Name token (x4)      cpl
     ^^^--------------------------------------------- Planet distance    SOLAR
                       ^^^--------------------------- Sun distance       SOLAR
                                          ^^--------- Sun x-y offset     SOLAR

76543210 76543210 76543210 76543210 76543210 76543210
   s0_hi    s0_lo    s1_hi    s1_lo    s2_hi    s2_lo