Menu
JAQForum Ver 19.10.27

Forum Index : Microcontroller and PC projects : Thrust: Another BBC Micro game ported

Posted: 05:07pm
14 Sep 2026
Copy link to clipboard
matherp
Guru

This is sort of like moon lander on steroids

thrust.zip






# Thrust for the PicoMite — player's guide

A port of Jeremy C. Smith's *Thrust* (Superior Software, 1986) for the BBC
Micro. The flight model, the levels, the artwork and the sound are the
original's own numbers, taken out of the published disassembly, so it should
fly exactly as it did in 1986. **This is a test build and we would like to
know where it does not.**

## What you need

- A PicoMite running **MODE 2** — 320 × 240, 16 colours. Any VGA or HDMI
 build, or a 320 × 240 LCD panel that supports `FRAMEBUFFER`.
- Firmware **V6.03.02b6 or later**. The sound is the BBC's own, played
 through `PLAY BBC SOUND`, which arrived in that version.
- A keyboard. Several keys need to be *held*, so a joystick will not do.

## Loading it

`Bas/thrust.bas` in the PicoMite repository. Copy it to the board and `RUN`,
or `SAVE` it and `RUN` from flash. It is about 76 KB of BASIC, so give it a
moment to load.

## Controls

| | |
| --- | --- |
| **← →** or **Z X** | turn |
| **↑** or **SPACE** | thrust |
| **RETURN** or **A** | tractor field — also refuels; blocks the gun |
| **↓** or **F** | fire |
| **ESC** | back to the title screen |

## The first thing to do, because it is not obvious

**You start with an empty tank.** That is the original's design, not a fault:
the ship is put down directly above the first fuel cell. So —

1. Press SPACE at the title screen. You will fall.
2. **Hold RETURN** as you drop. A line snaps to the fuel cell and the fuel
  counter climbs fast.
3. Now thrust, and fly.

Each fuel cell is a fixed ration. Sit on the beam for about a second and the
cell is used up, worth 30 points and roughly twenty seconds of thrust.

## What you are trying to do

Lift the **Klystron pod** off its stand and carry it up out of the cave.

- Fly down to the pod and **hold RETURN** until the beam appears, then **pull
 away**. The pod lifts off as the line goes taut. It is not a grab — it is a
 tow.
- The pod hangs on a tether and swings. Thrust across the tether sets it
 swinging and thrust along it does not, and a swing does not stop on its own
 — you have to fly it out. Everything you thrust with the pod aboard is at
 half power.
- Fly up out of the top of the cave and the mission is complete.
- **Leaving without the pod costs you a ship.** There is a `NO POD — TURN
 BACK` warning in the panel before you cross the line.

The **reactor** is worth 2000 points. Shoot it fifty times and the planet goes
with it — and you have ten seconds to get clear, counted down in the panel. It
is the difference between a 2000-point mission and a 4000-point one.

Limpet guns are bolted into the rock and shoot at you. They are worth 75 each,
fuel cells 15 if you shoot them instead of drinking them.

Anything touching the rock destroys you — the ship, and the pod you are
towing. There is no landing in Thrust.

## The tractor field is a mode, not a shield

One key does the field, the refuelling and the bubble. While you hold it:

- You cannot fire.
- It burns fuel.
- You are drawn as a circle, which is **wider than the ship in both
 directions**, so it fouls the rock sooner than the hull does.

It does not make you invulnerable. It looks as though it should, and the
disassembly calls it a shield, but nothing in the original's code protects you
while it is up. If you are certain the real game behaves otherwise, please say
so — that is exactly the sort of thing we want to hear.

## Six caves, then round again

`mission = 1` is the first cave and they cycle after six. Each time round, the
guns fire harder, and after the first six:

- **missions 7–12** — gravity is reversed
- **missions 13–18** — the cave is invisible
- **missions 19–24** — both at once

You get four ships. The high score is kept in `A:/thrust.hi` and survives a
reset.

## Testing shortcuts

These are not part of the game; they are there so you can reach things without
playing to them.

| | |
| --- | --- |
| **N** | complete the mission — the only way to reach the later caves |
| **P** | swap the cave under you |
| **G** | full tank, and the pod already on the tether |
| **S** | screenshot to `A:/thrust.bmp` |
| **B** | frame-time benchmark, every level, about 45 seconds |

## What we would most like to know

1. **Does it fly like Thrust?** The turn rate, the thrust response, the
  feel of the pod on the tether. All of that is the original's arithmetic
  and it has been checked number by number, but nobody has compared it
  against the real thing side by side.
2. **Is the first refuel findable** without being told? It is the one moment
  where the game explains nothing.
3. Anything that stutters, and what was happening when it did.

## What is knowingly missing

- The rock is a solid colour. The BBC drew it on alternate pixel rows, which
 gave it a texture; ours is cheaper and plainer.
- No demo mode, no name entry for the high score.
- Collision is eight points around the ship's outline rather than per-pixel,
 so a very near miss may read differently from the original.

## Credit

*Thrust* by Jeremy C. Smith, Superior Software, 1986. This port is built on
the reverse-engineered source published by Kieran HJ Connell at
<https://github.com/kieranhj/thrust-disassembly>, without which it would not
have been worth attempting — the three technical references in that repository
are the reason the physics is the original's and not an imitation of it.
 
Posted: 08:43am
15 Sep 2026
Copy link to clipboard
Volhout
Guru


Peter,

Your tempo for porting BBC games is immense.
You should have all major BBC games ported by Christmas.
No time to play them all... years and years of playing ahead.

Volhout
 
Posted: 08:47am
15 Sep 2026
Copy link to clipboard
matherp
Guru

I'm only doing the technically interesting ones. The next one is Exile. Even on the RP2350 this will need a csub for the player's physics (the game's update_object routine: integration, extents, water and buoyancy, the tile collision scan, push-out and bounce, support and wedging, surface wind, actions, angle and facing, walking, jumping, jetpack and booster, sprite and palette, gravity and inertia)

  Quote  Exile (BBC Micro, 1988) is widely regarded as one of the most technically astonishing games ever released on an 8‑bit machine. It combined procedural world generation, physics simulation, AI behaviours, and non‑linear exploration in a way that simply shouldn’t have been possible on a 2 MHz 6502 with 32 KB RAM. It remains one of the BBC Micro’s crown jewels.

Why Exile Was Technically Revolutionary

1. Procedural World Generation (Pure Function Map)
The entire 256×256 world — 65,536 tiles — is never stored in memory.
Instead, a 500‑byte function at &17B1 computes each tile on demand using chained 6502 bit‑operations and carry‑flag entropy.
One wrong carry bit produces a completely different planet.

This allowed:

Caverns, shafts, diagonal tunnels

A crashed ship

Underground bases

Hand‑placed set‑pieces (≈1 KB)

All inside a machine where the screen alone consumed ~20 KB.

2. Physics Engine (Gravity, Buoyancy, Drag, Momentum)
Exile simulated:

Gravity

Inertia

Wind

Buoyancy

Bouncing

Per‑object mass

All computed every tick for every active object using 8‑bit arithmetic and clever use of the carry flag.
Gravity itself is literally one carry‑flag ripple per tick.

3. AI & Ecosystem
Creatures respond to:

Hunger

Pain

Environmental triggers

Player actions

The world behaves like a coherent ecosystem rather than a set of scripted rooms.

4. Non‑linear Exploration
You can tackle objectives in multiple orders.
Teleport recall points allow recovery from near‑death without traditional “lives”.
Many puzzles rely on physics, water, fire, or object interactions rather than arbitrary triggers.

Edited 2026-09-15 18:49 by matherp
 
Posted: 10:00am
15 Sep 2026
Copy link to clipboard
Mixtel90
Guru


  Quote  Even on the RP2350 this will need a csub for the player's physics (the game's update_object routine: integration, extents, water and buoyancy, the tile collision scan, push-out and bounce, support and wedging, surface wind, actions, angle and facing, walking, jumping, jetpack and booster, sprite and palette, gravity and inertia)

So not much at all then.  ;)
 
Posted: 11:14am
15 Sep 2026
Copy link to clipboard
Volhout
Guru


So the order for BBC native games is:

Chucky Egg - this is one you asked the community for development on pico 3-4 years ago.
            no-one took up the glove, so you did is yourself.
Elite      - 1 year ago we already saw 3D rotating cobra's etc. prelude ..?
Thrust     - never heard of it.
Exile      - the masterpiece
...?

Breakout was a (beautiful) demo I guess. But not BBC related.

Volhout
 
Posted: 12:19pm
15 Sep 2026
Copy link to clipboard
cosmic frog
Guru

I remember Thrust. It was more like Gravitar

Dave.
 


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