Home
JAQForum Ver 24.01
Log In or Join  
Active Topics
Local Time 03:39 15 Sep 2026 Privacy Policy
Jump to

Notice. New forum software under development. It's going to miss a few functions and look a bit ugly for a while, but I'm working on it full time now as the old forum was too unstable. Couple days, all good. If you notice any issues, please contact me.

Forum Index : Microcontroller and PC projects : Elite on the Pico Computer 3

Author Message
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 11850
Posted: 09:51pm 13 Sep 2026
Copy link to clipboard 
Print this post

Code tomorrow.

https://youtu.be/wgzn5YHsKNo

A full implementation of the BBC Micro version of Elite in interpreted MMbasic running on the Pico Computer 3. This version includes everything in the disk version of Elite including functionality only available with the second 6502 processor.

# Elite on the PicoComputer 3

A port of the 1984 BBC Micro *Elite* by Ian Bell and David Braben, written in
MMBasic. The galaxy, the market, the ship blueprints and the flight model all
come from the published 6502 source, so Lave is the Lave you remember.

## Getting it running

You need a PicoMite HDMI build and a screen, and the firmware must be
**version 6.03.02b5 or above**. `PRINT MM.VER` at the prompt: it must report
6.030205 or more. b5 is where `LIBRARY LOAD` arrived, and the program's first
line is one, so nothing earlier will get past it. Earlier firmware would not
do anyway - b3 and before had `MAX3D` set to 8, where the bubble wants one
object for the station and one for every ship that is close enough to be drawn
as a mesh, and the `DRAW3D` and `FRAMEBUFFER CLOSE` fixes this leans on all
landed after b3 was released. The port asks the firmware how many it may have
rather than assuming, so it runs on whatever it is given.

It was written and timed on a PC3 running PicoMiteHDMIWEB at 378 MHz, where it
holds about 18 ms a frame; it will run slower on a slower clock. The program
sets `MODE 2` itself.

Elite comes in two files. `elite_lib.bas` holds the declarations - every
constant, every variable and the ship blueprints - and is installed as the
PicoMite's library; `elite.bas` is the code. One MMBasic program cannot be more
than 144 KB and this is heading past it, so the declarations are kept in the
library instead, where they cost the program nothing.

Copy both to the drive:

```
python Bas/elite_tools/pc3.py put Bas/elite/elite_lib.bas A:/elite_lib.bas
python Bas/elite_tools/pc3.py put Bas/elite/elite.bas     A:/elite.bas
LOAD "A:/elite.bas"
RUN
```

The first `RUN` installs the library and starts again by itself - that takes a
second or two. Every run after that finds the library already matches and goes
straight into the game. Nothing else to do: the program's first line is
`LIBRARY LOAD`, so it looks after its own library.

The title screen is a picture file. Copy `Bas/elite/data/title.jpg` to the
drive as `A:/title.jpg` - `pc3.py put Bas/elite/data/title.jpg A:/title.jpg`
will do it. Without the file the title screen draws the words instead, so
nothing is broken if you skip this.

## Starting

The title screen waits for you.

| | |
|---|---|
| any key | start a game |
| `H` | the controls, on one page |
| `Esc` | leave the program |

Leave it alone for twenty seconds and the demo plays a whole game by itself,
in three legs: trading at Lave and outfitting the ship, a fight on the way out
and a hyperspace jump; a pirate pack and a docking at the far end; then out
again with a mining laser to break a rock up and scoop what comes off it. It
drives the real game - every screen and every shot is the game's own code,
with the demo standing in for the keyboard. Press any key during it and you
get a game of your own.

`Esc` in a game takes you back to the title.

## Flying

| | |
|---|---|
| `<` `>` or left/right arrows | roll |
| `S` / `X`, or down/up arrows | climb / dive |
| `Space` / `/` | faster / slower |
| `A` | fire |
| `T` then `M` | lock a missile, then launch it |
| `E` | E.C.M., which destroys every missile in the area |
| `C` | docking computer on and off |
| `H` | hyperspace |
| `J` | in-system jump, when nothing but rocks is about |
| `G` | galactic hyperdrive, if one is fitted |
| `Tab` | energy bomb |
| `Esc` | escape pod if one is fitted, otherwise back to the title |
| `P` | pause; `D` while paused writes the screen to the card |
| `F1` `F2` `F3` `F4` | fore, aft, left, right views |

On either chart, `F` asks for a system name and moves the cursor to it, and
holding `Shift` with an arrow moves the cursor eight notches instead of one.

`F5` to `F10` reach the same six screens whether you are flying or docked:
galactic chart, short range chart, system data, market prices, status,
inventory. On the charts the arrows move the cursor and it picks out the
nearest system; `F7` then tells you about it. A view key or `Return` puts you
back where you were.

### The dashboard

Down the left: forward shield, aft shield, fuel, cabin temperature, laser
temperature, altitude. Down the right: speed, roll, dive/climb, and the four
energy banks. Red means trouble in both directions - a high reading is bad for
speed and the temperatures, a low one is bad for everything else.

The altitude bar is your height above the planet, and it reads full until you
are within about 65000 units of it; fly to one planet radius and you are dead.
Cabin temperature climbs as you approach the sun, reaches the fuel scooping
threshold at about 32000 units, and kills you at about 22400.

The ellipse is the scanner. Each contact is a dash with a stick down to the
plane you are flying in, so the stick tells you how far above or below you it
is, and its colour says what it is: **red** a rock, **blue** a canister or an
escape pod, **green** the space station, **magenta** one of the three fat
traders - a Python, a Boa or an Anaconda - **yellow** a missile, **cyan**
everything else. The dial to its right is the compass: it
points at the station when you are near one and at the planet when you are not,
yellow and two rows deep when the thing is ahead of you, green and one row deep
when it is behind.

Out of the window, ships are cyan, rocks red, a missile yellow, a Thargoid
white, and the planet and the sun green. A red beam across the view means
somebody is shooting at you.

## Docked

| | |
|---|---|
| `F1` | launch |
| `F2` / `F3` | buy / sell cargo |
| `F4` | equip the ship |
| arrows | choose a row |
| `Space` | buy or sell one |
| `Return` | buy or sell a stated number - type it and press `Return` again |
| `F` | fill the tank, on the equipment screen |
| `S` / `L` | save / load your commander |

The quantity prompt shows the most you could trade - what the system has, what
your money will cover and what the hold will take - and refuses a digit that
would take you past it, rather than accepting the number and quietly trimming
it. `Escape` backs out without trading.

Saving writes `A:/cmdr.txt`, which is plain text and one value to a line.

## Making a living

Buy what a system makes and sell it where they don't. Lave is a Rich
Agricultural world, so food and textiles are cheap there and
radioactives, computers and machinery are dear - an Industrial system further
along the chart is where you sell the one and buy the other. Prices are set the
moment you arrive and do not move while you trade.

A full tank is seven light years and costs 14 credits. On the galactic chart
the green circle is what the tank will reach; put the cursor on something
inside it, check `F7` for what is there, then launch.

**Hyperspace only works once you are clear of the station's zone**, which means
flying away from it for about half a minute at full speed. Press `H` when you
are out.

## The missions

Two of them, and they find you rather than the other way round. Reach a combat
rating of Competent with 256 kills behind you, in one of the first two
galaxies, and the next time you dock the Navy has a message: a new Constrictor
has been stolen, and they would like it back in pieces. It is hiding in the
second galaxy, and nothing but a military laser will scratch it - the energy
bomb will not touch it either. Five thousand credits for bringing it down.

Do that, get most of the way from Dangerous to Deadly, and in the third galaxy
Naval Intelligence wants the Thargoid defence plans carried from Ceerdi to
Birera. The Thargoids come after you while you have them aboard. Deliver them
and you are given the Navy's own energy unit, which recharges half as fast
again as the one the shops sell.

The briefings are the original's own words, and where they are is in **What
the later BBC versions had** below.

## Docking

The station turns all the time, and its docking slot is a letterbox. Getting in
means five things at once: the station not angry with you, its slot facing you,
the station nearly dead ahead, and your wings lined up with the long axis of
the slot - which means rolling to match a station that will not stop turning.

Below speed 5 a failed approach is a bump. Above it, it is the end of you.

A system of technology level 11 or better has a dodecahedron rather than a
Coriolis. It is a different shape with the same slot and the same five tests,
so it makes no difference to the flying - but it is worth seeing.

You are not the only one docking. A trader on its way in flies the approach for
itself and goes inside, and leaves no wreck behind it because it did not
crash.

The docking computer (`C`) does the whole thing, including the rolling - and
that is ours, not the original's. In the cassette version pressing `C` docks
you instantly; the flown approach only appeared in the later 6502 Second
Processor and Master versions. You have to buy the computer either way: a new
commander has a front pulse laser, three missiles, seven light years of fuel
and nothing else, so every docking is hand-flown until you can afford 1500 Cr.

## The law

Slaves, narcotics and firearms are contraband, and slaves and narcotics count
double. Leaving a station with any of it aboard goes straight onto your record,
and out in space it is what you are **carrying** that calls the police out -
your record only makes things worse once a Viper is already watching you.

What the police then *do* about it is a separate question. A Viper is a bounty
hunter, and a bounty hunter leaves an honest commander alone: it only turns on
you once your record passes 40, where 50 makes you a Fugitive. A hold full of
slaves is worth exactly 40 by itself, which is why that particular cargo brings
trouble and a hold of furs does not. Shoot a policeman and you are a Fugitive
on the spot.

Shooting an innocent bystander - a trader going about its business - brings the
station down on you as well, and the station can call out more police than you
want to meet. Pirates are nobody's concern but their own.

Arriving somewhere new halves whatever is on your record, because nobody that
far away has heard the details.

Where you are matters as much as what you have done. An anarchy spawns roughly
four times the pirates of a Corporate State, which is what the government
column on the system data screen is telling you.

## The traffic

Not everything out there is coming for you. Traders fly the lane between the
planet and the station and mostly ignore you - four passes in five they do
nothing at all - and half of them are on their way in, so if you follow one it
will fly itself into the slot and be gone. A station that nobody has annoyed
sends out a Shuttle or a Transporter now and then. Rock hermits look like
asteroids and are: shoot one and something comes out of it.

## How it is put together

Two files, and the split is not arbitrary. `elite_lib.bas` is the declarations
and the ship data - `src/00_main.bas` and `data/ships.bas`, which between them
contain not one executable statement. `elite.bas` is everything else. A
PicoMite library initialises itself before the program's first line, so the
constants and variables are in place before any code runs, and `RESTORE` finds
a label in the library from the program because the two halves share one table
of subroutine, function and label names.

Measured on a PC3: the program is 106 K of the 144 K a program may have, and
the library 30 K of its own 144 K. As one file it would not fit at all, which
is what the split is for.

The bubble holds eighteen ships and the firmware allows 32 Draw3D objects, so
every ship in it can be a mesh. An object is asked for when a ship comes into
mesh range and given back when it leaves, rather than taken for life when the
ship is created - which used to hand the pool to whichever ships arrived first
and could leave a Cobra filling the screen drawn as a dash while a speck on the
horizon held an object. What limits a crowded bubble now is the frame, not the
pool: seventeen ships all close at once costs about 76 ms a frame, where five
costs 41. The game's speed does not depend on the frame rate, so a busy moment
looks choppy rather than running fast.

The library also carries `OPTION LOCAL VARIABLES 128`, which has to be the
first thing executed anywhere and so can only go there. MMBasic splits a fixed
pool of 736 variable slots between locals and globals, and the default leaves
only 480 globals - Elite declares 472 of them, and a constant costs a slot just
as a variable does. At 128 locals there are 608, and measured on the board
there is room for 136 more.

Three rules come out of the split, and `build.py` now checks all of them
rather than leaving them to be remembered.

**The trace cache stays in the main program.** `OPTION TRACECACHE`, `OPTION
CACHE` and every subroutine they name must be in the program, never the
library: the cache compiles a subroutine against the program it was prepared
from.

**A library must contain nothing program-specific.** It runs its top level in
front of *every* program, not just its own. `OPTION CACHE SUB` names two of
Elite's subroutines, and with it in the library no other program would start at
all - `Sub/function not found` before its first line. `build.py` moves it, and
every option not required to precede a `DIM`, into the program.

**And there must be no `END` in a library** - the interpreter runs the whole of
it at `RUN`, and an `END` would stop the run before the program began.

## What the later BBC versions had

This is a port of the cassette version, which is the one most people played and
the smallest of the family. Elite went on being rewritten, and the BBC Micro
disc version, the 6502 Second Processor version and the BBC Master all carry
things that are simply not in the cassette game and so are not here either.

From the **disc version** (and the Master, which is built on it):

- Kill credit for canisters, asteroids, escape pods and Thargons - which this
 port already gives, having been written to the simpler rule. The cassette
 game awards nothing for junk; this and the disc version award for everything.
- A real docking computer that flies you in, which is where our flown approach
 comes from.
- A disc access menu and printer support.

Taken from it so far:

- **Buying and selling a stated number of tonnes** rather than one at a time.
 `Space` still trades one, so nothing that used to be quick got slower.
- **Mining and military lasers**, at the original's own powers and prices: a
 mining laser is 50 at 800 Cr, a military laser 151 at 6000 Cr - and 151 has
 the top bit set, so it fires continuously like a beam at half again a beam's
 damage. Both appear at tech level 9, which is where the original unlocks the
 whole list at once.
- **The system descriptions**, built from the disc version's extended token
 table. The cassette game's data screen stops at the planet's radius; this
 adds the paragraph underneath, and it is the disc version's own, because the
 generator is seeded from the system's two seeds before it starts choosing.
 Lave really is most famous for its vast rain forests and the Lavian tree
 grub.
- **Moving the chart cursor a long way with SHIFT**, eight notches at a time.
 This one needed the firmware: it reported shift with the down and right
 arrows as DOWNSEL and RIGHTSEL but gave shift with left and up no code of
 their own, so only half the feature was reachable. They are now LEFTSEL
 (&HA2) and UPSEL (&HA4).
- **Finding a system by typing its name.** `F` on either chart asks for a
 name and moves the cursor to it. The cassette game has no such thing - you
 hunt for the dot yourself, and with 256 systems to a galaxy that is a chore.
- **Asteroids worth splitting.** A mining laser is the only thing that breaks a
 rock into anything: an asteroid or a rock hermit gives nought to three
 boulders, a boulder gives splinters, and a splinter scooped is minerals - or,
 one time in eight, gem-stones. Anything else you shoot a rock with simply
 destroys it, as before.
- **The NEWB flags.** Our spawner and tactics decided everything from the ship
 type and one AI byte; the disc version splits the question in two. sAI says
 how a ship behaves, sNewb says what it is - trader, bounty hunter, hostile,
 pirate, docking, innocent bystander, cop, and whether the type carries an
 escape pod. A ship that is not hostile now goes somewhere rather than simply
 existing: to the station if it is docking, to the planet if not. A trader
 minds its own business four passes in five. The police are bounty hunters,
 so a Viper ignores a clean commander and only turns on you once your record
 passes 40 - which is what makes launching with a hold of slaves matter.
 Shooting an innocent bystander brings the station down on you where shooting
 a pirate does not, and only a pilot whose ship type carries a pod bails out.
 A ship marked as docking flies itself in and goes inside, which is where bit
 7 gets its second meaning - "scooped or docked" on a ship in the bubble, as
 against "carries an escape pod" in the table of defaults. It leaves no
 wreck, pays no bounty and counts as no kill: it docked, it did not die.
 The original keeps a separate Cobra Mk III and Python for the pirates -
 identical ships, different flags - and so do we.
- **The two missions.** The whole of both of them is four bits in one byte -
 the original calls it TP - and every branch of what happens when you dock
 comes out of those four bits. Reach a combat rating of Competent with 256
 kills in one of the first two galaxies and the Navy asks you to hunt down a
 stolen Constrictor; it is hiding in the second galaxy at galactic
 coordinates (144, 33), which our own galaxy generator turns into Orarra,
 and nothing but a military laser will scratch it - then only at a quarter
 of the damage it would do to anything else. Five thousand credits and 256
 kill points for bringing it down. In the third galaxy, once that is done
 and you are most of the way from Dangerous to Deadly, Naval Intelligence
 wants the Thargoid defence plans carried from Ceerdi (215, 84) to Birera
 (63, 72); while they are aboard the Thargoids come after you on one
 spawning pass in five, and delivering them earns the Navy's own energy
 unit, which recharges half as fast again as the one the shops sell.
 The briefings are the original's own words, from the extended token table.
- **The Dodo station.** A system of technology level 10 or above has a
 dodecahedron rather than a Coriolis - which is to say a screen that reads
 technology level 11 or better, because the data screen shows one more than
 the number the game works in. It is not a second station and it needs no
 code of its own: the original swaps the blueprint that the space station
 ship type points at, and our five docking tests read the station orientation
 vectors rather than its shape, so they work on either without being told
 which one is in front of them.
- **The ship hangar**, which is what you see for a moment when you dock. Half
 the time it is one of the original's four groups - a Shuttle and a
 Transporter, three cargo canisters, or a Viper and a Krait at one of two
 spacings - and half the time a single Sidewinder, Mamba, Krait or Adder
 somewhere random. Each is spun on the spot so it can face any way, and the
 height each stands at comes from the square root of its targetable area, so
 a big ship sits higher off the deck than a small one. The floor is the
 original's eleven lines at 130/n below the centre for n from 2 to 12, and
 the back wall its fifteen verticals up to the horizon.

From the **6502 Second Processor version**, which had a whole second computer
to spend - and which this port now follows, because a PicoComputer has that
much spare and a great deal more:

- **Colour in space.** The cassette game's space view is black and white. The
 Second Processor's has four colours, and its two tables say what gets which:
 ships are cyan, a missile yellow, rocks red, a Thargoid white, and the planet
 and the sun green. Both tables are the original's, read out of its source.
- **Six colours on the scanner**, which is the best of the lot: a rock is red,
 a canister or an escape pod blue, the station green, a big fat Python
 magenta, a missile yellow, everything else cyan. You can read the bubble at a
 glance now instead of flying over to look.
- **Lasers in red** - both ours and theirs. Being shot at also *looks* like
 something at last: a ship that fires draws a red beam across the screen, as
 every version from the cassette on has, and which this port did not.
- **A bigger bubble.** Ten ships and four police become eighteen and seven.
- **The Cougar**, which appears in no earlier version and is the rarest thing
 in Elite - about one spawning in nine thousand. It sits still and ignores
 you, because it was given no AI, which is the original's way of faking a
 cloaking device. Shoot at it and it wakes up with a beam laser, four
 missiles, an E.C.M. and an aggression of sixty out of sixty-three.
- **Rock hermits that are not just rocks.** One asteroid in eighty is somebody's
 house. It sits there ignoring you - the original gives it no AI at all - but
 shoot at it, as shooting at anything turns its AI on, and from then on there
 is about one chance in five, each time it is serviced, of a Mamba, Krait,
 Adder or Gecko coming out of it with an E.C.M. and an aggression of 56 out of
 63. It settles down again afterwards, so the next one costs another shot.
 (The original's own comment says the pick includes a Sidewinder; its
 arithmetic says otherwise, because the carry is set by the time it reaches
 the addition.)
- **The station's own traffic.** A Shuttle or a Transporter, about one pass in
 128, and never a second while the first is still about - which is what the
 two fat slow ships in the hangar are for. Neither carries a laser, so the
 aggression the original hands them only means they come over for a look.
- **A screenshot key.** Press `P` to pause, then `D`, and the frame is written
 to the card as `SCREEN1.BMP`, `SCREEN2.BMP` and so on - which is what CTRL-D
 does there.

- **Its ships.** The cassette game has twelve designs; seventeen more are here,
 taken from the Second Processor source through the same generator: the Krait,
 Adder, Gecko, Cobra Mk I and Worm that fill out a pirate pack, the Asp Mk II
 and Fer-de-Lance a lone bounty hunter flies, the Boa and Anaconda that make a
 fat trader worth stopping, boulders, splinters and rock hermits among the
 rubble, the Cougar, the Shuttle and Transporter the station sends out, the
 Dodo, and the Constrictor that mission one is about. They arrive by the
 original's own rules: a pirate group is drawn with the AND of two random
 numbers so the small fighters come up far more often than the Cobra, and a
 rock hermit is about one asteroid in eighty.

Still missing from it: the log tables and Bitstik support, both of which are
meaningless here. The Moray is missing from
the Second Processor version too - it picks a lone bounty hunter from types 24
to 27 and the Moray is 28, so nothing in that game ever spawns one either.

What is left of that list is not difficult in the way the cassette game was
difficult: the blueprints are published and the extended token table is only
data. It is a question of program memory, which is the one thing here that is
genuinely tight.

## How close is this to the real thing

Everything the cassette version does, it now does, and a good deal that it
does not - the section above lists what has been taken from the later versions
and where each piece came from. The galaxy, the market, the ship blueprints,
the flight model, the tactics, the spawning, the legal model and all five
docking tests are the original's own arithmetic. Ships are wireframe with the
hidden faces removed, decided from the blueprint's own face normals, as the
original decides it.

Three things here are deliberately not the cassette version's. The colour is
the first, and the section above says where it comes from: a cassette Elite is
black and white out of the window and one colour on the scanner. The second is
the flown docking approach described above. The third is the space station,
which is given black faces behind its edges so that it blots out the planet,
the sun and the stardust instead of showing their lines straight through
itself - on a BBC the station is hollow like everything else, and a planet's
great circles run across its face. Every other ship is left hollow, as it
should be. Switch the station back with `STNSOLID = 0` in `00_main.bas`;
filling it costs about eight tenths of a millisecond a frame at docking range
and does not move the frame rate, which is paced by the display rather than by
the drawing.

The sound is the original's ten effects, converted from the SFX table in its
source. Five of the ten are its exact numbers; the other five ask for sound
envelopes that the cassette *loader* defined rather than the game, so those are
approximated by a pitch sweep and are marked as approximated in the table and
in `tests/sfxtest.bas`, which plays all ten by name so they can be judged.

What is left:

- **The hyperspace countdown.** The jump happens at once behind its tunnel of
 rings; the original counts down from 15 while you keep flying, and you can be
 attacked during it.
- **The pace.** Every one of the original's constants is per iteration of its
 main loop, which ran at something like ten or twelve a second. The game now
 scales by how much of one of those iterations each frame is worth, so the
 speed no longer depends on the frame rate, but the rate itself - `TICKRATE`
 in `00_main.bas` - is an estimate rather than a measured fact.
- **No indicator for the safe zone.** Getting clear of it to hyperspace takes
 about half a minute of flying away from the station and nothing tells you
 when you are out; press `H` and see.
- **Equipment cannot be damaged.** In the original a hit can take out your
 E.C.M.

Everything else on this list has been closed: sound, in-flight messages, the
per-view laser mounts, cargo scooping and fuel scoops, the altitude and cabin
temperature gauges with the planet and the sun that drive them, collisions,
the escape pod, the energy bomb, the in-system jump, the other seven galaxies,
ships that fire missiles at you and jam yours with their own E.C.M., pilots
who bail out of a dying ship, and equipment that has to be bought before it
works.

## Testing it

The fixtures are how each phase was checked and they are kept working. Set
`DEMOFRAMES` to a frame count and `DEMOSCENE` to one of these in
`src/00_main.bas`, then run:

| | |
|---|---|
| 1 | flight and combat, photographed every few frames |
| 2 | the docking approach |
| 3 | every docked screen, drawn once each |
| 4 | the ship hangar, eight times over |
| 5 | the four mission briefings, page by page |
| 6 | both missions walked end to end |
| 7 | what each kind of ship does, and why |
| 8 | a trader flying itself into the station |

Scene 6 also reports which systems the missions' coordinates land on, which is
the check that our galaxy generator and the original agree: galaxy 2 (144, 33)
must be Orarra, galaxy 3 (215, 84) Ceerdi and galaxy 3 (63, 72) Birera. Scene 5
prints a system description for the same reason - the briefings and the
descriptions share one set of case rules.

`Bas/savetest/` and `Bas/libtest/` are firmware harnesses rather than game
ones: the first characterises what `SaveProgramToFlash` does with CSUB and
DefineFont blocks, the second proves a program plus a library really does get
twice the code space.
 
homa

Guru

Joined: 05/11/2021
Location: Germany
Posts: 688
Posted: 05:44am 14 Sep 2026
Copy link to clipboard 
Print this post

An incredible achievement,
congratulations!  
 
Mixtel90

Guru

Joined: 05/10/2019
Location: United Kingdom
Posts: 9128
Posted: 07:04am 14 Sep 2026
Copy link to clipboard 
Print this post

What happened to "Thou shalt not run Elite on a $1.30 embedded microcontroller."?

Brilliant! Although the only version I ever attempted to play was the Speccy one (not an experience I particularly enjoyed). We didn't have access to a BBC Micro.
Mick

Zilog Inside! nascom.info for Nascom & Gemini
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 11850
Posted: 07:30am 14 Sep 2026
Copy link to clipboard 
Print this post

  Quote  Although the only version I ever attempted to play was the Speccy one (not an experience I particularly enjoyed).


Apparently the Spectrum averaged 1-3 FPS on elite. My port is running at >25FPS in standard MMBasic
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 11850
Posted: 08:19am 14 Sep 2026
Copy link to clipboard 
Print this post

Here is the code. Note, you must be running V6.03.02b5 or above. Tested on the HDMIWEB build but should run on any HDMI or VGA RP2350 build with a local keyboard. Also tested and working on a PicoCalc with a RP2350A running PicoMiteRP2350V6.03.02b5.uf2

Elite.zip

# Getting started in Elite

You are docked at Lave with 100 credits, a pulse laser pointing forwards, three
missiles, seven light years of fuel and an empty twenty-tonne hold. Nobody is
going to tell you what to do next. This is the part of Elite that puts people
off, so here is what to do next.

If you want the real thing afterwards, Ian Bell - who wrote it with David
Braben - keeps the original documentation on his own site at
`http://www.elitehomepage.org` (plain `http`, not `https`). The **Original
Players' Guide** there is the 1984 one, and the **Elite Manual** is the book
that came in the box. Everything below is about this port in particular: the
keys are a PC keyboard's, not a BBC's.

## Your first trip

**1. Buy something to sell.** Press `F2`. Lave is a Rich Agricultural world, so
food and textiles are cheap here and worth money somewhere industrial. Put the
cursor on **Food** and press `Return`, type `20`, press `Return` again - that
fills the hold in one go. It will cost you about 72 credits of your 100.

Leave the slaves and the narcotics alone. They are worth a great deal and they
are also the reason the police will want a word; more on that below.

**2. Pick somewhere to go.** Press `F6` for the short range chart. The green
circle is how far your fuel will take you. Move the cursor with the arrow keys
- hold `Shift` to move it faster - and press `F7` to see what any system is.
You want an **Industrial** one. From Lave, *Diso* and *Leesti* are 3.6 light
years away, *Reorte* 4.4 and *Zaonce* 5.6, so all of them are inside a full
tank. Zaonce is an Average Industrial world with a technology level of 12, and
Lave to Zaonce is the run that everybody who played this remembers.

You can also press `F` on either chart and type a name.

**3. Launch.** `F1`. You come out of the slot already moving.

**4. Get clear of the station.** Hold `Space` to speed up and fly away from it
for about half a minute. Watch the **S** bulb at the bottom of the dashboard:
while it is lit you are inside the station's zone and cannot jump. When it goes
out, you can.

**5. Jump.** Press `H`. A countdown from fifteen appears in the top left corner
and you keep flying while it runs - about seven seconds, and anything out there
gets a last go at you. Then the stars stretch and you are somewhere else.

**6. Sell.** Find the station (below), dock, press `F3`, put the cursor on Food
and press `Return`, `20`, `Return`. You should be up on the trip. Buy whatever
*this* world is cheap in, and go back.

That is the whole game, at its simplest. Everything else is what you do with
the money.

## Finding the station

When you arrive you are pointing at the planet, and the station is in orbit
round it. Fly towards the planet. The dial to the right of the scanner is the
compass: it points at the planet when you are far out and at the station once
you are near one. **Yellow and two rows deep** means the thing is ahead of you;
**green and one row deep** means it is behind you and you should turn round.

The station appears as a green dash on the scanner when you get close.

## Docking, which is the hard part

The slot is a letterbox, and the station never stops turning. To get in you
need four things at once:

- the station not angry with you
- its slot facing you rather than its back
- the station nearly dead ahead
- **your wings lined up with the slot** - which means rolling to match a
 station that is still turning

Below speed 5 a failed approach is a bump. Above it, it kills you. So come in
slowly: `/` to slow down, and take the last stretch at 2 or 3.

The trick nobody tells you: line up *first*, from a distance, then drift in.
Roll until the slot is horizontal on your screen, and keep rolling gently to
hold it there as the station turns.

**Or buy a docking computer for 1500 Cr and press `C`.** It flies the whole
approach, including the rolling. You cannot buy one at Lave - it needs a
technology level of 9 and Lave is 5 - so it is a thing to buy once you are
somewhere advanced and have the money. It is the best 1500 credits in the game.

## Staying alive

Your pulse laser is feeble and you have no shields to speak of. For the first
few trips, **do not fight anything**. If something hostile turns up:

- turn away from it and run - most things are slower than a Cobra
- if it is on your tail, `E` fires the E.C.M. if you have bought one, which
 destroys any missile in the area
- `Esc` launches your escape pod if you have bought one. You wake up docked,
 alive, and with a clean record - and with nothing else. No cargo, no
 equipment, no missiles, a twenty-tonne hold and a front pulse laser: what you
 started with. It is the difference between a setback and the end

Watch the four energy bars on the right of the dashboard. When they get low,
break off. They recharge.

## The law

Slaves, narcotics and firearms are contraband. Launching with any of it aboard
goes straight onto your record, and a hold full of slaves is enough on its own
to make the police take an interest.

A Viper is a bounty hunter as much as a policeman: it will leave an honest
commander alone entirely. It is your *record* that makes it hostile, not your
cargo - but launching with contraband is what puts the record there.

Two things to avoid:

- **Never shoot a policeman.** It makes you a Fugitive on the spot and there is
 no way back except a galactic hyperdrive.
- **Do not shoot traders.** They are going about their business, and attacking
 one brings the station down on you as well.

Arriving in a new system halves whatever is on your record, so a run of bad
behaviour does fade if you travel.

## Making more than a living

Trading pays slowly and safely. When you are tired of it:

- **Bounty hunting.** Buy a beam laser (1000 Cr) and an E.C.M. (600 Cr) first.
 Anarchy and Feudal systems are full of pirates, which is what the government
 column on the data screen is telling you.
- **Mining.** A mining laser (800 Cr) and fuel scoops (525 Cr). Shoot an
 asteroid with the mining laser and it breaks into boulders; shoot a boulder
 and it breaks into splinters; fly through a splinter and you scoop minerals,
 or one time in eight, gem-stones.
- **The large cargo bay** (400 Cr) takes your hold from twenty tonnes to
 thirty-five, and pays for itself quickly.

Buy the cargo bay, then the E.C.M., then a beam laser, then the docking
computer. In that order.

## Two things that will happen eventually

Your combat rating climbs as you destroy things. Once you have 256 kills
behind you - a combat rating of Competent - the Navy will have a message the
next time you dock, provided you are still in one of the first two galaxies.
Take the job.

And keep an eye on your fuel. Seven light years is not far, a full tank costs
14 credits, and being stranded in a system you cannot leave with a hold full of
food nobody wants is the most Elite way there is to end a career.

## The keys, in one place

| | |
|---|---|
| `<` `>` or left/right | roll |
| `S` / `X`, or down/up | climb / dive |
| `Space` / `/` | faster / slower |
| `A` | fire |
| `T` then `M` | lock a missile, then launch it |
| `E` | E.C.M. |
| `C` | docking computer |
| `H` | hyperspace |
| `Esc` | escape pod, or back to the title |
| `F1`-`F4` | fore, aft, left, right views |
| `F5` `F6` | galactic and short range charts |
| `F7` | data on the system the cursor is on |
| `F8` `F9` `F10` | market prices, status, hold |
| `P` then `D` | pause, then save a screenshot to the card |

Docked, `F1` launches, `F2`/`F3` buy and sell, `F4` is the equipment shop,
`Space` trades one tonne, `Return` asks how many, and `S` and `L` save and load
your commander.
Edited 2026-09-14 19:07 by matherp
 
thwill

Guru

Joined: 16/09/2019
Location: United Kingdom
Posts: 4398
Posted: 10:11am 14 Sep 2026
Copy link to clipboard 
Print this post

Hi Peter,

I've not run it up myself yet (won't run on MMB4L as I had no reason at the time to port the MMBasic 3D engine) but from the video it looks very impressive .

I would have lost a bet on what you were squirreling away at, I had thought perhaps an MMBasic port of Another World.

I can't see you having sat down to play hours of Elite in order to create a "workalike"? so would I be correct in thinking this is the result of expending a lot of Claude tokens on a copy of the Elite 6502 annotated disassembly ?

Best wishes,

Tom
MMBasic for Linux, Game*Mite, CMM2 Welcome Tape, Creaky old text adventures
 
thwill

Guru

Joined: 16/09/2019
Location: United Kingdom
Posts: 4398
Posted: 10:25am 14 Sep 2026
Copy link to clipboard 
Print this post

  matherp said  Apparently the Spectrum averaged 1-3 FPS on elite.


It's funny how the memory works - I believe I played that version (though not as much as I did the BBC Micro disc version) and that it was playable ... I wouldn't have thought it would be at 1-3 FPS.

Best wishes,

Tom
MMBasic for Linux, Game*Mite, CMM2 Welcome Tape, Creaky old text adventures
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 11850
Posted: 12:16pm 14 Sep 2026
Copy link to clipboard 
Print this post

Here is an updated version with the original BBC sound effects. Needs V6.03.02b6 or above to run

Elite.zip
 
Print this page


To reply to this topic, you need to log in.

The Back Shed's forum code is written, and hosted, in Australia.
© JAQ Software 2026