Skip to navigation

Elite on the BBC Micro and NES

Version analysis of SHIP_PYTHON

This code appears in the following versions (click to see it in the source code):

Code variations between these versions are shown below.

Name: SHIP_PYTHON Type: Variable Category: Drawing ships Summary: Ship blueprint for a Python Deep dive: Ship blueprints
.SHIP_PYTHON

Code variation 1 of 12Related to a standard feature

Pythons in the cassette version spawn up to 3 canisters on their demise, but this rises to 5 canisters in all other versions.

Tap on a block to expand it, and tap it again to revert.

EQUB 3 \ Max. canisters on demise = 3
EQUB 5 \ Max. canisters on demise = 5

Code variation 2 of 12Related to a standard feature

Pythons in the cassette version have a larger targetable area (120 x 120) than in all other versions (80 x 80).

Tap on a block to expand it, and tap it again to revert.

EQUW 120 * 120 \ Targetable area = 120 * 120
EQUW 80 * 80 \ Targetable area = 80 * 80
 EQUB LO(SHIP_PYTHON_EDGES - SHIP_PYTHON)          \ Edges data offset (low)
 EQUB LO(SHIP_PYTHON_FACES - SHIP_PYTHON)          \ Faces data offset (low)

Code variation 3 of 12Related to an advanced feature

The advanced versions of Elite have an extra edge count for the ship colour; Pythons are shown in cyan.

Tap on a block to expand it, and tap it again to revert.

EQUB 85 \ Max. edge count = (85 - 1) / 4 = 21
EQUB 89 \ Max. edge count = (89 - 1) / 4 = 22
 EQUB 0                 \ Gun vertex               = 0

Code variation 4 of 12Related to a standard feature

Pythons in the cassette version have a slightly more glorious demise, with 10 expoding nodes compared to 9 nodes in all other versions.

Tap on a block to expand it, and tap it again to revert.

EQUB 46 \ Explosion count = 10, as (4 * n) + 6 = 46
EQUB 42 \ Explosion count = 9, as (4 * n) + 6 = 42
 EQUB 66                \ Number of vertices       = 66 / 6 = 11
 EQUB 26                \ Number of edges          = 26

Code variation 5 of 12Related to a standard feature

All Pythons in the cassette version have a bounty of 200 Cr, whereas other versions have two types of Python: traders (with no bounty) and pirates (with a bounty of 200 Cr).

Tap on a block to expand it, and tap it again to revert.

EQUW 200 \ Bounty = 200
EQUW 0 \ Bounty = 0
 EQUB 52                \ Number of faces          = 52 / 4 = 13
 EQUB 40                \ Visibility distance      = 40
 EQUB 250               \ Max. energy              = 250
 EQUB 20                \ Max. speed               = 20

 EQUB HI(SHIP_PYTHON_EDGES - SHIP_PYTHON)          \ Edges data offset (high)
 EQUB HI(SHIP_PYTHON_FACES - SHIP_PYTHON)          \ Faces data offset (high)

 EQUB 0                 \ Normals are scaled by    = 2^0 = 1
 EQUB %00011011         \ Laser power              = 3
                        \ Missiles                 = 3

.SHIP_PYTHON_VERTICES

      \    x,    y,    z, face1, face2, face3, face4, visibility
 VERTEX    0,    0,  224,     0,      1,    2,     3,         31    \ Vertex 0

Code variation 6 of 12Related to a standard feature

The Python has a number of different visibility settings for vertices, edges and faces between the cassette and disc ship hangar versions (which have slightly lower visibility values), and the other versions.

See below for more variations related to this code.

Tap on a block to expand it, and tap it again to revert.

VERTEX 0, 48, 48, 0, 1, 4, 5, 30 \ Vertex 1
VERTEX 0, 48, 48, 0, 1, 4, 5, 31 \ Vertex 1
 VERTEX   96,    0,  -16,    15,     15,   15,    15,         31    \ Vertex 2
 VERTEX  -96,    0,  -16,    15,     15,   15,    15,         31    \ Vertex 3

Code variation 7 of 12Related to a standard feature

See variation 6 above for details.

Tap on a block to expand it, and tap it again to revert.

VERTEX 0, 48, -32, 4, 5, 8, 9, 30 \ Vertex 4
VERTEX 0, 48, -32, 4, 5, 8, 9, 31 \ Vertex 4
 VERTEX    0,   24, -112,     9,      8,   12,    12,         31    \ Vertex 5
 VERTEX  -48,    0, -112,     8,     11,   12,    12,         31    \ Vertex 6
 VERTEX   48,    0, -112,     9,     10,   12,    12,         31    \ Vertex 7

Code variation 8 of 12Related to a standard feature

See variation 6 above for details.

Tap on a block to expand it, and tap it again to revert.

VERTEX 0, -48, 48, 2, 3, 6, 7, 30 \ Vertex 8 VERTEX 0, -48, -32, 6, 7, 10, 11, 30 \ Vertex 9 VERTEX 0, -24, -112, 10, 11, 12, 12, 30 \ Vertex 10
VERTEX 0, -48, 48, 2, 3, 6, 7, 31 \ Vertex 8 VERTEX 0, -48, -32, 6, 7, 10, 11, 31 \ Vertex 9 VERTEX 0, -24, -112, 10, 11, 12, 12, 31 \ Vertex 10
.SHIP_PYTHON_EDGES

    \ vertex1, vertex2, face1, face2, visibility

Code variation 9 of 12Related to a standard feature

See variation 6 above for details.

Tap on a block to expand it, and tap it again to revert.

EDGE 0, 8, 2, 3, 30 \ Edge 0
EDGE 0, 8, 2, 3, 31 \ Edge 0
 EDGE       0,       3,     0,     2,         31    \ Edge 1
 EDGE       0,       2,     1,     3,         31    \ Edge 2

Code variation 10 of 12Related to a standard feature

See variation 6 above for details.

Tap on a block to expand it, and tap it again to revert.

EDGE 0, 1, 0, 1, 30 \ Edge 3 EDGE 2, 4, 9, 5, 29 \ Edge 4 EDGE 1, 2, 1, 5, 29 \ Edge 5 EDGE 2, 8, 7, 3, 29 \ Edge 6 EDGE 1, 3, 0, 4, 29 \ Edge 7 EDGE 3, 8, 2, 6, 29 \ Edge 8 EDGE 2, 9, 7, 10, 29 \ Edge 9 EDGE 3, 4, 4, 8, 29 \ Edge 10 EDGE 3, 9, 6, 11, 29 \ Edge 11 EDGE 3, 5, 8, 8, 5 \ Edge 12 EDGE 3, 10, 11, 11, 5 \ Edge 13 EDGE 2, 5, 9, 9, 5 \ Edge 14 EDGE 2, 10, 10, 10, 5 \ Edge 15
EDGE 0, 1, 0, 1, 31 \ Edge 3 EDGE 2, 4, 9, 5, 31 \ Edge 4 EDGE 1, 2, 1, 5, 31 \ Edge 5 EDGE 2, 8, 7, 3, 31 \ Edge 6 EDGE 1, 3, 0, 4, 31 \ Edge 7 EDGE 3, 8, 2, 6, 31 \ Edge 8 EDGE 2, 9, 7, 10, 31 \ Edge 9 EDGE 3, 4, 4, 8, 31 \ Edge 10 EDGE 3, 9, 6, 11, 31 \ Edge 11 EDGE 3, 5, 8, 8, 7 \ Edge 12 EDGE 3, 10, 11, 11, 7 \ Edge 13 EDGE 2, 5, 9, 9, 7 \ Edge 14 EDGE 2, 10, 10, 10, 7 \ Edge 15
 EDGE       2,       7,     9,    10,         31    \ Edge 16
 EDGE       3,       6,     8,    11,         31    \ Edge 17
 EDGE       5,       6,     8,    12,         31    \ Edge 18
 EDGE       5,       7,     9,    12,         31    \ Edge 19

Code variation 11 of 12Related to a standard feature

See variation 6 above for details.

Tap on a block to expand it, and tap it again to revert.

EDGE 7, 10, 12, 10, 29 \ Edge 20 EDGE 6, 10, 11, 12, 29 \ Edge 21 EDGE 4, 5, 8, 9, 29 \ Edge 22 EDGE 9, 10, 10, 11, 29 \ Edge 23 EDGE 1, 4, 4, 5, 29 \ Edge 24 EDGE 8, 9, 6, 7, 29 \ Edge 25
EDGE 7, 10, 12, 10, 31 \ Edge 20 EDGE 6, 10, 11, 12, 31 \ Edge 21 EDGE 4, 5, 8, 9, 31 \ Edge 22 EDGE 9, 10, 10, 11, 31 \ Edge 23 EDGE 1, 4, 4, 5, 31 \ Edge 24 EDGE 8, 9, 6, 7, 31 \ Edge 25
.SHIP_PYTHON_FACES

Code variation 12 of 12Related to a standard feature

See variation 6 above for details.

Tap on a block to expand it, and tap it again to revert.

\ normal_x, normal_y, normal_z, visibility FACE -27, 40, 11, 30 \ Face 0 FACE 27, 40, 11, 30 \ Face 1 FACE -27, -40, 11, 30 \ Face 2 FACE 27, -40, 11, 30 \ Face 3 FACE -19, 38, 0, 30 \ Face 4 FACE 19, 38, 0, 30 \ Face 5 FACE -19, -38, 0, 30 \ Face 6 FACE 19, -38, 0, 30 \ Face 7 FACE -25, 37, -11, 30 \ Face 8 FACE 25, 37, -11, 30 \ Face 9 FACE 25, -37, -11, 30 \ Face 10 FACE -25, -37, -11, 30 \ Face 11 FACE 0, 0, -112, 30 \ Face 12
\ normal_x, normal_y, normal_z, visibility FACE -27, 40, 11, 31 \ Face 0 FACE 27, 40, 11, 31 \ Face 1 FACE -27, -40, 11, 31 \ Face 2 FACE 27, -40, 11, 31 \ Face 3 FACE -19, 38, 0, 31 \ Face 4 FACE 19, 38, 0, 31 \ Face 5 FACE -19, -38, 0, 31 \ Face 6 FACE 19, -38, 0, 31 \ Face 7 FACE -25, 37, -11, 31 \ Face 8 FACE 25, 37, -11, 31 \ Face 9 FACE 25, -37, -11, 31 \ Face 10 FACE -25, -37, -11, 31 \ Face 11 FACE 0, 0, -112, 31 \ Face 12